视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
python获取本地时间/日期格式化
2020-11-27 14:27:33 责编:小采
文档


获取当前时间:

Python代码

import time 
print time.time() #获取当前时间 
print time.strftime("%Y-%m-%d %X ") #获取当前时间(按照指定格式)

用time.localtime()方法,作用是格式化时间戳为本地的时间:

Python代码

import time 
print time.localtime(time.time())

输出结果:time.struct_time(tm_year=2015, tm_mon=11, tm_mday=513, tm_hour=15, tm_min=48, tm_sec=28, tm_wday=3, tm_yday=309, tm_isdst=0)

现在看起来更有希望格式成我们想要的时间了。
time.strftime('%Y-%m-%d',time.localtime(time.time()))

Python代码

import time 
print time.strftime('%Y-%m-%d',time.localtime(time.time()))

最后用time.strftime()方法,把刚才的一大串信息格式化成我们想要的东西,现在的结果是:2015-11-05

ime.strftime里面有很多参数,可以让你能够更随意的输出自己想要的东西:
下面是time.strftime的参数:

strftime(format[, tuple]) -> string
将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出

1,python中时间日期格式化符号:

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

2. 计算时间差:

Python代码

#coding=utf-8 
import time 
import datetime 
d1 = datetime.datetime(2013,6,9) 
d2 = datetime.datetime(2015, 11,5) 
 
print (d1 - d2).days

输出结果是:879

3.计算运行时间差:

Python代码

#coding=utf-8 
<pre> 
import time 
import datetime 
 
starttime = datetime.datetime.now() 
 
time.sleep(3) 
 
endtime = datetime.datetime.now() 
print (endtime - starttime).seconds <strong> </strong>

输出结果是:3

4,计算十天后的日期时间:

Python代码

#coding=utf-8 
 
import time 
import datetime 
 
d1 = datetime.datetime.now() 
d3 = d1 + datetime.timedelta(days =10) 
 
print str(d3) 
print d3.ctime()<strong> </strong>

输出结果:

2015-11-15 14:44:04.291000
Sun Nov 15 14:44:04 2015

5,阳历转阴历

#! -*- encoding: GBK -*- 
 
import re 
import math 
import time 
import os 
 
MONTH_NAME = ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] 
MONTH_DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31]; 
 
LUNAR_CALENDAR_TABLE = [ 
 0x04AE53,0x0A5748,0x5526BD,0x0D2650,0x0D9544,0x46AAB9,0x056A4D,0x09AD42,0x24AEB6,0x04AE4A, # //*1901-1910*/ 
 0x6A4DBE,0x0A4D52,0x0D2546,0x5D52BA,0x0B544E,0x0D6A43,0x296D37,0x095B4B,0x749BC1,0x049754, # //*1911-1920*/ 
 0x0A4B48,0x5B25BC,0x06A550,0x06D445,0x4ADAB8,0x02BD,0x095742,0x2497B7,0x04974A,0x6B3E, # //*1921-1930*/ 
 0x0D4A51,0x0EA546,0x56D4BA,0x05AD4E,0x02B4,0x393738,0x092E4B,0x7C96BF,0x0C9553,0x0D4A48, # //*1931-1940*/ 
 0x6DA53B,0x0B554F,0x056A45,0x4AADB9,0x025D4D,0x092D42,0x2C95B6,0x0A954A,0x7B4ABD,0x06CA51, # //*1941-1950*/ 
 0x0B5546,0x555ABB,0x04DA4E,0x0A5B43,0x352BB8,0x052B4C,0x8A953F,0x0E9552,0x06AA48,0x6AD53C, # //*1951-1960*/ 
 0x0AB54F,0x04B5,0x4A5739,0x0A574D,0x0522,0x3E9335,0x0D9549,0x75AABE,0x056A51,0x096D46, # //*1961-1970*/ 
 0x54AEBB,0x04AD4F,0x0A4D43,0x4D26B7,0x0D254B,0x8D52BF,0x0B5452,0x0B6A47,0x696D3C,0x095B50, # //*1971-1980*/ 
 0x049B45,0x4A4BB9,0x0A4B4D,0xAB25C2,0x06A554,0x06D449,0x6ADA3D,0x0AB651,0x093746,0x5497BB, # //*1981-1990*/ 
 0x04974F,0x0B44,0x36A537,0x0EA54A,0x86B2BF,0x05AC53,0x0AB7,0x5936BC,0x092E50,0x0C95, # //*1991-2000*/ 
 0x4D4AB8,0x0D4A4C,0x0DA541,0x25AAB6,0x056A49,0x7AADBD,0x025D52,0x092D47,0x5C95BA,0x0A954E, # //*2001-2010*/ 
 0x0B4A43,0x4B5537,0x0AD54A,0x955ABF,0x04BA53,0x0A5B48,0x652BBC,0x052B50,0x0A9345,0x474AB9, # //*2011-2020*/ 
 0x06AA4C,0x0AD541,0x24DAB6,0x04BA,0x69573D,0x0A4E51,0x0D26,0x5E933A,0x0D534D,0x05AA43, # //*2021-2030*/ 
 0x36B537,0x096D4B,0xB4AEBF,0x04AD53,0x0A4D48,0x6D25BC,0x0D254F,0x0D5244,0x5DAA38,0x0B5A4C, # //*2031-2040*/ 
 0x056D41,0x24ADB6,0x049B4A,0x7A4BBE,0x0A4B51,0x0AA546,0x5B52BA,0x06D24E,0x0ADA42,0x355B37, # //*2041-2050*/ 
 0x09374B,0x8497C1,0x049753,0x0B48,0x66A53C,0x0EA54F,0x06B244,0x4AB638,0x0AAE4C,0x092E42, # //*2051-2060*/ 
 0x3C9735,0x0C99,0x7D4ABD,0x0D4A51,0x0DA545,0x55AABA,0x056A4E,0x0A6D43,0x452EB7,0x052D4B, # //*2061-2070*/ 
 0x8A95BF,0x0A9553,0x0B4A47,0x6B553B,0x0AD54F,0x055A45,0x4A5D38,0x0A5B4C,0x052B42,0x3A93B6, # //*2071-2080*/ 
 0x069349,0x7729BD,0x06AA51,0x0AD546,0x54DABA,0x04BE,0x0A5743,0x452738,0x0D2A,0x8E933E, # //*2081-2090*/ 
 0x0D5252,0x0DAA47,0x66B53B,0x056D4F,0x04AE45,0x4A4EB9,0x0A4D4C,0x0D1541,0x2D92B5 # //*2091-2099*/ 
] 
# 下面的三个表格是农历数据表 LunarCalendarTable 的结构。总共使用了32位整数的0~23位。 
# 
# 6 5 4 3 2 1 0 
# 表示春节的公历月份 表示春节的公历日期 
# 
# 19 18 17 16 15 14 13 12 11 10 9 8 7 
# 1 2 3 4 5 6 7 8 9 10 11 12 13 
# 农历1-13 月大小 。月份对应位为1,农历月大(30 天),为0 表示小(29 天) 
# 
# 23 22 21 20 
# 表示当年闰月月份,值为0 为则表示当年无闰月。 
 
def get_month_days(year, month): 
 global MONTH_DAYS; 
 if(month==2): 
 if(((year%4 == 0) and (year%100 != 0)) or (year%400 == 0)): 
 return 29 
 else: 
 return 28 
 else: 
 return(MONTH_DAYS[month]); 
 
def get_syear_days(syear): 
 if(((syear%4 == 0) and (syear%100 != 0)) or (syear%400 == 0)): 
 return 366 
 else: 
 return 365 
 
def get_days_of_syear(syear, smonth, sday): 
 """ get given day's number of sun year """ 
 days = 0 
 for i in range(1, smonth): 
 days += get_month_days(syear, i) 
 days += sday 
 return days 
 
def get_days_of_lyear(syear, smonth, sday): 
 """ get given day's number of the lunar year """ 
 global LUNAR_CALENDAR_TABLE 
 lyear = syear 
 spring_month = (LUNAR_CALENDAR_TABLE[syear-1901] & 0x60) >> 5 
 spring_day = (LUNAR_CALENDAR_TABLE[syear-1901] & 0x1F) 
 if ((spring_month > smonth) or ((spring_month == smonth) and (spring_day > sday))): 
 # the day is before spring festival day, and is previous day in lunar year 
 spring_month = (LUNAR_CALENDAR_TABLE[syear-1901 - 1] & 0x60) >> 5 
 spring_day = (LUNAR_CALENDAR_TABLE[syear-1901 - 1] & 0x1F) 
 lyear -= 1 
 lunar_days = get_syear_days(lyear) + get_days_of_syear(syear, smonth, sday) 
 - get_days_of_syear(lyear, spring_month, spring_day) 
 else: 
 lunar_days = get_days_of_syear(syear, smonth, sday) 
 - get_days_of_syear(syear, spring_month, spring_day) 
 lunar_days += 1 # consider current day 
 return (lyear, lunar_days) 
 
def get_lunar_date(syear, smonth, sday): 
 if syear < 1901 or syear > 2099: 
 return 
 # lunar year, lunar days to spring festival 
 lyear, lunar_days = get_days_of_lyear(syear, smonth, sday); 
 l_double_month = (LUNAR_CALENDAR_TABLE[lyear-1901] >> 20 ) & 0xF 
 
 lmonth = lday = 1 
 bits = 19 
 month_begin_day = 0 
 for lmonth in range(1, 14): 
 l_month_big = (LUNAR_CALENDAR_TABLE[lyear-1901] >> bits) & 0x1 
 if month_begin_day + 29 + l_month_big < lunar_days: 
 lmonth += 1 
 month_begin_day += 29 + l_month_big 
 else: 
 lday = lunar_days - month_begin_day 
 break 
 bits -= 1 
 if l_double_month: 
 # lunar double month adjust 
 if l_double_month == lmonth - 1: 
 lmonth -= 1 
 lmonth += 100 # double month 
 elif l_double_month < lmonth - 1: 
 lmonth -= 1 
 return (lyear, lmonth, lday) 
 
if __name__ == "__main__": 
 y,m,d = 2010, 9, 28 
 print "Sun calendar 2010-9-28 == Lunar calendar ", get_lunar_date(y,m,d)

输出结果:

Sun calendar 2010-9-28 == Lunar calendar (2010, 8, 21)

Python版的农历日历Calendar:

#coding=utf-8 
 
#参见:http://download.csdn.net/source/1178 
 
#****************************************************************************** 
# 下面为阴历计算所需的数据,为节省存储空间,所以采用下面比较变态的存储方法. 
#****************************************************************************** 
#数组g_lunar_month_day存入阴历1901年到2050年每年中的月天数信息, 
#阴历每月只能是29或30天,一年用12(或13)个二进制位表示,对应位为1表30天,否则为29天 
g_lunar_month_day = [ 
 0x4ae0, 0xa570, 0x5268, 0xd260, 0xd950, 0x6aa8, 0x56a0, 0x9ad0, 0x4ae8, 0x4ae0, #1910 
 0xa4d8, 0xa4d0, 0xd250, 0xd548, 0xb550, 0x56a0, 0x96d0, 0x95b0, 0x49b8, 0x49b0, #1920 
 0xa4b0, 0xb258, 0x6a50, 0x6d40, 0xada8, 0x2b60, 0x9570, 0x4978, 0x4970, 0xb0, #1930 
 0xd4a0, 0xea50, 0x6d48, 0x5ad0, 0x2b60, 0x9370, 0x92e0, 0xc968, 0xc950, 0xd4a0, #1940 
 0xda50, 0xb550, 0x56a0, 0xaad8, 0x25d0, 0x92d0, 0xc958, 0xa950, 0xb4a8, 0x6ca0, #1950 
 0xb550, 0x55a8, 0x4da0, 0xa5b0, 0x52b8, 0x52b0, 0xa950, 0xe950, 0x6aa0, 0xad50, #1960 
 0xab50, 0x4b60, 0xa570, 0xa570, 0x5260, 0xe930, 0xd950, 0x5aa8, 0x56a0, 0x96d0, #1970 
 0x4ae8, 0x4ad0, 0xa4d0, 0xd268, 0xd250, 0xd528, 0xb540, 0xb6a0, 0x96d0, 0x95b0, #1980 
 0x49b0, 0xa4b8, 0xa4b0, 0xb258, 0x6a50, 0x6d40, 0xada0, 0xab60, 0x9370, 0x4978, #1990 
 0x4970, 0xb0, 0x6a50, 0xea50, 0x6b28, 0x5ac0, 0xab60, 0x9368, 0x92e0, 0xc960, #2000 
 0xd4a8, 0xd4a0, 0xda50, 0x5aa8, 0x56a0, 0xaad8, 0x25d0, 0x92d0, 0xc958, 0xa950, #2010 
 0xb4a0, 0xb550, 0xb550, 0x55a8, 0x4ba0, 0xa5b0, 0x52b8, 0x52b0, 0xa930, 0x74a8, #2020 
 0x6aa0, 0xad50, 0x4da8, 0x4b60, 0x9570, 0xa4e0, 0xd260, 0xe930, 0xd530, 0x5aa0, #2030 
 0x6b50, 0x96d0, 0x4ae8, 0x4ad0, 0xa4d0, 0xd258, 0xd250, 0xd520, 0xdaa0, 0xb5a0, #2040 
 0x56d0, 0x4ad8, 0x49b0, 0xa4b8, 0xa4b0, 0xaa50, 0xb528, 0x6d20, 0xada0, 0x55b0, #2050 
] 
 
#数组gLanarMonth存放阴历1901年到2050年闰月的月份,如没有则为0,每字节存两年 
g_lunar_month = [ 
 0x00, 0x50, 0x04, 0x00, 0x20, #1910 
 0x60, 0x05, 0x00, 0x20, 0x70, #1920 
 0x05, 0x00, 0x40, 0x02, 0x06, #1930 
 0x00, 0x50, 0x03, 0x07, 0x00, #1940 
 0x60, 0x04, 0x00, 0x20, 0x70, #1950 
 0x05, 0x00, 0x30, 0x80, 0x06, #1960 
 0x00, 0x40, 0x03, 0x07, 0x00, #1970 
 0x50, 0x04, 0x08, 0x00, 0x60, #1980 
 0x04, 0x0a, 0x00, 0x60, 0x05, #1990 
 0x00, 0x30, 0x80, 0x05, 0x00, #2000 
 0x40, 0x02, 0x07, 0x00, 0x50, #2010 
 0x04, 0x09, 0x00, 0x60, 0x04, #2020 
 0x00, 0x20, 0x60, 0x05, 0x00, #2030 
 0x30, 0xb0, 0x06, 0x00, 0x50, #2040 
 0x02, 0x07, 0x00, 0x50, 0x03 #2050 
] 
 
#================================================================================== 
 
from datetime import date, datetime 
from calendar import Calendar as Cal 
 
START_YEAR = 1901 
 
def is_leap_year(tm): 
 y = tm.year 
 return (not (y % 4)) and (y % 100) or (not (y % 400)) 
 
def show_month(tm): 
 (ly, lm, ld) = get_ludar_date(tm) 
 print 
 print u"%d年%d月%d日" % (tm.year, tm.month, tm.day), week_str(tm), 
 print u"	农历:", y_lunar(ly), m_lunar(lm), d_lunar(ld) 
 print 
 print u"日	一	二	三	四	五	六" 
 
 c = Cal() 
 ds = [d for d in c.itermonthdays(tm.year, tm.month)] 
 count = 0 
 for d in ds: 
 count += 1 
 if d == 0: 
 print "	", 
 continue 
 
 (ly, lm, ld) = get_ludar_date(datetime(tm.year, tm.month, d)) 
 if count % 7 == 0: 
 print 
 
 d_str = str(d) 
 if d == tm.day: 
 d_str = u"*" + d_str 
 print d_str + d_lunar(ld) + u"	", 
 print 
 
def this_month(): 
 show_month(datetime.now()) 
 
def week_str(tm): 
 a = u'星期一 星期二 星期三 星期四 星期五 星期六 星期日'.split() 
 return a[tm.weekday()] 
 
def d_lunar(ld): 
 a = u'初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 廿十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十'.split() 
 return a[ld - 1] 
 
def m_lunar(lm): 
 a = u'正月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月'.split() 
 return a[lm - 1] 
 
def y_lunar(ly): 
 y = ly 
 tg = u'甲 乙 丙 丁 戊 己 庚 辛 壬 癸'.split() 
 dz = u'子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥'.split() 
 sx = u'鼠 牛 虎 免 龙 蛇 马 羊 猴 鸡 狗 猪'.split() 
 return tg[(y - 4) % 10] + dz[(y - 4) % 12] + u' ' + sx[(y - 4) % 12] + u'年' 
 
def date_diff(tm): 
 return (tm - datetime(1901, 1, 1)).days 
 
def get_leap_month(lunar_year): 
 flag = g_lunar_month[(lunar_year - START_YEAR) / 2] 
 if (lunar_year - START_YEAR) % 2: 
 return flag & 0x0f 
 else: 
 return flag >> 4 
 
def lunar_month_days(lunar_year, lunar_month): 
 if (lunar_year < START_YEAR): 
 return 30 
 
 high, low = 0, 29 
 iBit = 16 - lunar_month; 
 
 if (lunar_month > get_leap_month(lunar_year) and get_leap_month(lunar_year)): 
 iBit -= 1 
 
 if (g_lunar_month_day[lunar_year - START_YEAR] & (1 << iBit)): 
 low += 1 
 
 if (lunar_month == get_leap_month(lunar_year)): 
 if (g_lunar_month_day[lunar_year - START_YEAR] & (1 << (iBit -1))): 
 high = 30 
 else: 
 high = 29 
 
 return (high, low) 
 
def lunar_year_days(year): 
 days = 0 
 for i in range(1, 13): 
 (high, low) = lunar_month_days(year, i) 
 days += high 
 days += low 
 return days 
 
def get_ludar_date(tm): 
 span_days = date_diff(tm) 
 
 #阳历1901年2月19日为阴历1901年正月初一 
 #阳历1901年1月1日到2月19日共有49天 
 if (span_days <49): 
 year = START_YEAR - 1 
 if (span_days <19): 
 month = 11; 
 day = 11 + span_days 
 else: 
 month = 12; 
 day = span_days - 18 
 return (year, month, day) 
 
 #下面从阴历1901年正月初一算起 
 span_days -= 49 
 year, month, day = START_YEAR, 1, 1 
 #计算年 
 tmp = lunar_year_days(year) 
 while span_days >= tmp: 
 span_days -= tmp 
 year += 1 
 tmp = lunar_year_days(year) 
 
 #计算月 
 (foo, tmp) = lunar_month_days(year, month) 
 while span_days >= tmp: 
 span_days -= tmp 
 if (month == get_leap_month(year)): 
 (tmp, foo) = lunar_month_days(year, month) 
 if (span_days < tmp): 
 return (0, 0, 0) 
 span_days -= tmp 
 month += 1 
 (foo, tmp) = lunar_month_days(year, month) 
 
 #计算日 
 day += span_days 
 return (year, month, day) 
 
#功能简单,只打印当月的 
this_month()

输出结果:

2015年11月5日 星期四 农历: 乙未 羊年 九月 廿四


日一二三四 五六

1廿十2廿一 3廿二4廿三 *5廿四6廿五 7廿六
8廿七9廿八 10廿九11三十 12初一13初二 14初三
15初四16初五 17初六18初七 19初八20初九 21初十
22十一23十二 24十三25十四 26十五27十六 28十七
29十八30十九

计算年龄:

from time import * 
#a function to find your age 
def age(): 
 print "Enter Your Date of Birth" 
 d=input("Day:") 
 m=input("Month:") 
 y=input("Year:") 
 #get the current time in tuple format 
 a=gmtime() 
 #difference in day 
 dd=a[2]-d 
 #difference in month 
 dm=a[1]-m 
 #difference in year 
 dy=a[0]-y 
 #checks if difference in day is negative 
 if dd<0: 
 dd=dd+30 
 dm=dm-1 
 #checks if difference in month is negative when difference in day is also negative 
 if dm<0: 
 dm=dm+12 
 dy=dy-1 
 #checks if difference in month is negative when difference in day is positive 
 if dm<0: 
 dm=dm+12 
 dy=dy-1 
 print "Your current age is %s Years %s Months & %s Days"%(dy,dm,dd) 
 
age()

下载本文
显示全文
专题