时间和日期:
python中提供了time和calendar模块来用于格式化日期和时间
时间元组(struct_time):
属性 | 字段 | 值 |
tm_year | 4位数年 | 2008 |
tm_mon | 月 | 1 到 12 |
tm_mday | 日 | 1到31 |
tm_hour | 小时 | 0到23 |
tm_min | 分钟 | 0到59 |
tm_sec | 秒 | 0到61 (60或61是闰秒) |
tm_wday | 一周的第几日 | 0到6 (0是周一) |
tm_yday | 一年的第几日 | 1到366 (儒略历) |
tm_isdst | 夏令时 | -1, 0, 1, -1是决定是否为夏令时的旗帜 |
Time相关的方法:
函数 | 描述 |
time.altzone | 返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。 |
time.asctime([tupletime]) | 接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。 |
time.clock( ) | 用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。 |
time.ctime([secs]) | 作用相当于asctime(localtime(secs)),未给参数相当于asctime() |
time.gmtime([secs]) | 接收时间辍(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组t。注:t.tm_isdst始终为0 |
time.localtime([secs]) | 接收时间辍(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取0或1,取决于当地当时是不是夏令时)。 |
time.mktime(tupletime) | 接受时间元组并返回时间辍(1970纪元后经过的浮点秒数)。 |
time.sleep(secs) | 推迟调用线程的运行,secs指秒数。 |
time.strftime(fmt[,tupletime]) | 接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。 |
time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') | 根据fmt的格式把一个时间字符串解析为时间元组。 |
time.timer( ) | 返回当前时间的时间戳(1970纪元后经过的浮点秒数)。 |
time.tzset() | 根据环境变量TZ重新初始化时间相关设置。 |
Time模块的两个重要属性:
属性 | 描述 |
time.timezone | 属性time.timezone是当地时区(未启动夏令时)距离格林威治的偏移秒数(>0,美洲;<=0大部分欧洲,亚洲,非洲)。 |
time.tzname | 属性time.tzname包含一对根据情况的不同而不同的字符串,分别是带夏令时的本地时区名称,和不带的。 |
Calendar相关的方法:
函数 | 描述 |
calendar.calendar(year,w=2,l=1,c=6) | 返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数。 |
calendar.firstweekday( ) | 返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一。 |
calendar.isleap(year) | 是闰年返回True,否则为false。 |
calendar.leapdays(y1,y2) | 返回在Y1,Y2两年之间的闰年总数。 |
calendar.month(year,month,w=2,l=1) | 返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。 |
calendar.monthcalendar(year,month) | 返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。 |
calendar.monthrange(year,month) | 返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。 |
calendar.prcal(year,w=2,l=1,c=6) | 相当于 print calendar.calendar(year,w,l,c). |
calendar.prmonth(year,month,w=2,l=1) | 相当于 print calendar.calendar(year,w,l,c)。 |
calendar.setfirstweekday(weekday) | 设置每周的起始日期码。0(星期一)到6(星期日)。 |
calendar.timegm(tupletime) | 和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间辍(1970纪元后经过的浮点秒数)。 |
calendar.weekday(year,month,day) | 返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月)到 12(12月)。 |
Time和Calendar的使用示例和笔记:
import time; import calendar;
localtime = time.localtime(time.time()); print localtime; #输出: # time.struct_time(tm_year=2017, tm_mon=2, tm_mday=21, tm_hour=17, tm_min=19, tm_sec=56, tm_wday=1, tm_yday=52, tm_isdst=0)
print localtime.tm_year; #输出:2017
localtime = time.asctime(time.localtime(time.time())); print localtime; #输出:Tue Feb 21 17:19:56 2017
cal = calendar.month(2015, 5); print cal; #输出: # May 2015 #Mo Tu We Th Fr Sa Su # 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 31
print type(cal); #输出:<type 'str'>
print cal.splitlines(); #输出: # [' May 2015', 'Mo Tu We Th Fr Sa Su', ' 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 31']
for i in range(10): print "tick"; # time.sleep(1);
print time.timezone; #输出:-28800
print time.tzname; #输出:('China Standard Time', 'China Daylight Time')
print calendar.calendar(2015, 2, 1, 6); #输出: # 2015 # # January February March #Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su # 1 2 3 4 1 1 # 5 6 7 8 9 10 11 2 3 4 5 6 7 8 2 3 4 5 6 7 8 #12 13 14 15 16 17 18 9 10 11 12 13 14 15 9 10 11 12 13 14 15 #19 20 21 22 23 24 25 16 17 18 19 20 21 22 16 17 18 19 20 21 22 #26 27 28 29 30 31 23 24 25 26 27 28 23 24 25 26 27 28 29 # 30 31 # # April May June #Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su # 1 2 3 4 5 1 2 3 1 2 3 4 5 6 7 # 6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14 #13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21 #20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28 #27 28 29 30 25 26 27 28 29 30 31 29 30 # # July August September #Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su # 1 2 3 4 5 1 2 1 2 3 4 5 6 # 6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 13 #13 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 20 #20 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 27 #27 28 29 30 31 24 25 26 27 28 29 30 28 29 30 # 31 # # October November December #Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su # 1 2 3 4 1 1 2 3 4 5 6 # 5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13 #12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20 #19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27 #26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31 # 30
print calendar.isleap(1900); # 是闰年返回True,否则为false。 #输出:False """非整百年能被4整除的为闰年。(如2004年就是闰年,1900年不是闰年) 整百年能被400整除的是闰年。(如2000年是闰年,1900年不是闰年) 对于数值很大的年份,这年如果能被3200整除,并且能被172800整除则是闰年。 如172800年是闰年,86400年不是闰年(因为虽然能被3200整除,但不能被172800整除) (此按一回归年365天5h48'45.5''计算)。 """
print calendar.leapdays(1899, 1924); #输出:5 返回在1899,1924两年之间的闰年总数。
print calendar.firstweekday(); #输出:0 即星期一
print calendar.month(2015, 5); #输出: # May 2015 #Mo Tu We Th Fr Sa Su # 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 31
print calendar.monthcalendar(2015, 5); #输出:[[0, 0, 0, 0, 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, 31]]
print calendar.monthrange(2015, 5); #输出:(4, 31) |