
python可以通过多种方式处理日期和时间。 时间(time)、 日期时间(datetime) 和 日历(calendar) 模块可用于跟踪日期和时间。
>>> import time #导入时间模块,可以定时睡眠
>>> import datetime #导入时间日期模块
>>> startTime = datetime.datetime.now() #当前时间
>>> time.sleep(3) #睡眠3秒
>>> endTime = datetime.datetime.now() #当前时间
>>> print( (endTime - startTime).seconds ) #获取时间差(秒)
>>> d1 = datetime.datetime.now() #当前时间
>>> d2 = d1 + datetime.timedelta(days = 10) #10天后的时间
>>> d2
datetime.datetime(2018, 4, 19, 16, 2, 4, 825259)
>>> d1
datetime.datetime(2018, 4, 9, 16, 2, 4, 825259)提供与日期和时间相关的4个模块:
时间间隔是以秒为单位的浮点数。从1970年1月1日上午12:00开始。
time 模块中的time() 函数返回1970年1月1日上午12:00开始的秒数。
但是,这个形式不能表示在时代(1970年1月1日上午12:00)之前的日期。在未来的日子也不能以这种方式表示 - 截止点是在2038年的UNIX和Windows的某个时刻。
>>> import time
>>> time.time()
1523279564.329913许多python函数将时间处理成 9 个数字的元组,如下所示:
索引字段值 04位数表示年份2018,2019… 1月份1~12 2日期1~31 3小时0~23 4分钟0~59 5秒0~61(60或61是闰秒) 6星期几0~6(0是星期一) 7一年的第几天1~366(朱利安日) 8夏令时-1, 0, 1; -1表示库确定DST
>>> time.localtime()
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=9, tm_hour=21, tm_min=34, tm_sec=12, tm_wday=0, tm_yday=99, tm_isdst=0)要将从时间浮点值开始的秒数瞬间转换为时间序列,将浮点值传递给返回具有所有有效九个项目的时间元组的函数(例如本地时间)。
日期格式化函数: time.strftime() 函数。 格式字符串:时间的都是大写表示。 - %Y : 表示年,四位 - %m : 表示月,两位 - %d : 表示天,两位 - %H : 大写,表示小时 - %M : 大写,表示分钟 - %S : 大写,表示秒
>>> time.strftime("%Y-%m-%d %H:%M:%S" ,time.localtime())
'2018-04-09 21:48:29'calendar 模块提供了广泛的方法来显示年历和月度日历。
>>> import calendar
>>> calendar.month(2018, 4) #获取的是可打印字符串
' April 2018\nMo Tu We Th Fr Sa Su\n 1\n 2 3 4 5 6 7 8\n 9 10 11 12 13 14 15\n16 17 18 19 20 21 22\n23 24 25 26 27 28 29\n30\n'
>>> print(calendar.month(2018, 4)) #打印
April 2018
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
30time 时间模块提供了处理时间
import time
print ("time.localtime() : %s" , time.localtime())
time.localtime() : time.struct_time(tm_year = 2019, tm_mon = 2, tm_mday = 15,
tm_hour = 10, tm_min = 13, tm_sec = 50, tm_wday = 0, tm_yday = 46, tm_isdst = 0)
import time
t = (2019, 2, 15, 10, 13, 38, 1, 48, 0)
d = time.mktime(t) #指定元组作为时间
print ("time.mktime(t) : %f" % d)
print ("asctime(localtime(secs)): %s" % time.asctime(time.localtime(d)))
结果:
time.mktime(t) : 1550196818.000000
asctime(localtime(secs)): Fri Feb 15 10:13:38 2019
>>> time.strftime('%Y%m%d') #日期格式化
'20180409'
>>> time.strptime('20180808', '%Y%m%d') #解析日期字符串
time.struct_time(tm_year=2018, tm_mon=8, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=220, tm_isdst=-1)calendar 模块提供与日历相关的功能。包括为给定的月份或年份打印文本日历的功能。 默认情况下,日历将星期一作为一周的第一天,将周日作为最后一天,可以通过调用 calendar.setfirstweekday()函数设置修改。
>>> print(calendar.month(2018, 4))
April 2018
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
>>> calendar.setfirstweekday(6) #变更日历的第一天为周日
>>> print(calendar.month(2018, 4))
April 2018
Su Mo Tu We Th Fr Sa
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-calendar.calendar(year,w = 2,l = 1,c = 6) : 返回一个具有年份日历的多行字符串格式化为三列,以c个空格分隔。 w是每个日期的字符宽度; 每行的长度为21 * w + 18 + 2 * c,l是每周的行数。
>>> calendar.setfirstweekday(0)
>>> print(calendar.calendar(2019, 2, 1, 6,3))
2019
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 5 6 1 2 3 1 2 3
7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10
14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17
21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24
28 29 30 31 25 26 27 28 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 6 7 1 2 3 4 5 1 2
8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9
15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16
22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23
29 30 27 28 29 30 31 24 25 26 27 28 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 6 7 1 2 3 4 1
8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8
15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15
22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22
29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29
30
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 5 6 1 2 3 1
7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
30 31>>> calendar.firstweekday()
0>>> calendar.isleap(2019)
False
>>> calendar.isleap(2004)
True>>> print(calendar.month(2019,4,w = 4,l = 3))
April 2019
Mon Tue Wed Thu Fri Sat Sun
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