python复习笔记[6]——时间与日期

来源:互联网 发布:sql order by 降序 编辑:程序博客网 时间:2024/05/29 16:10


时间和日期:

python中提供了timecalendar模块来用于格式化日期和时间

时间元组(struct_time

属性

字段

tm_year

4位数年

2008

tm_mon

1 12

tm_mday

131

tm_hour

小时

023

tm_min

分钟

059

tm_sec

061 (6061是闰秒)

tm_wday

一周的第几日

06 (0是周一)

tm_yday

一年的第几日

1366 (儒略历)

tm_isdst

夏令时

-1, 0, 1, -1是决定是否为夏令时的旗帜

Time相关的方法:

函数

描述

time.altzone

返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。

time.asctime([tupletime])

接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"20081211 周二180714秒)的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纪元后经过的浮点秒数)并返回当地时间下的时间元组tt.tm_isdst可取01,取决于当地当时是不是夏令时)。

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* Cl是每星期行数。

calendar.firstweekday( )

返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一。

calendar.isleap(year)

是闰年返回True,否则为false

calendar.leapdays(y1,y2)

返回在Y1Y2两年之间的闰年总数。

calendar.month(year,month,w=2,l=1)

返回一个多行字符串格式的yearmonth月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6l是每星期的行数。

calendar.monthcalendar(year,month)

返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Yearmonth月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。

calendar.monthrange(year,month)

返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从112

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.calendaryearwlc)。

calendar.setfirstweekday(weekday)

设置每周的起始日期码。0(星期一)到6(星期日)。

calendar.timegm(tupletime)

time.gmtime相反:接受一个时间元组形式,返回该时刻的时间辍(1970纪元后经过的浮点秒数)。

calendar.weekday(year,month,day)

返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 1212月)。

 

TimeCalendar的使用示例和笔记:

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整除)

(此按一回归年3655h48'45.5''计算)。

"""

 

print calendar.leapdays(1899, 1924);

#输出:5 返回在18991924两年之间的闰年总数。

 

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)

56 0