python 时间相关函数
python 中与时间处理相关的模块包括 time、datetime、以及 calendar
time 模块
time() 函数:time() 函数用于返回当前时间的时间戳(1970年01月08时00分00秒到现在的浮点秒数)
time() 函数的语法:time.time() //此语句中的第一个 time 指的是 time 模块,该函数参数列表为空
代码:
1 import time 2 3 print('当前时间的时间戳:%f' % time.time())
localtime([secs]) 函数
localtime() 函数的作用是格式化时间戳为本地 struct_time。如果 secs 参数未输入则默认为当前时间
localtime() 函数语法:time.localtime([secs]) //time指的是 time 模块,可选参数 secs 表示 1970-1-1 到现在的秒数
代码:
1 import time 2 3 print('time.localtime(): ', time.localtime()) 4 # 输出: 5 # time.localtime(): time.struct_time(tm_year=2018, tm_mon=4, tm_mday=17, tm_hour=15, tm_min=20, tm_sec=12, tm_wday=1, tm_yday=107, tm_isdst=0) 6 # 最后三个输出的值的含义为 一周的第几日 0 ~ 6(0 是周一),一年中的第几日,夏令时(-1, 0, 1, -1)
gmtime([secs]) 函数
gmtime() 函数用于将一个时间戳转换成 UTC 时区(0 时区)的 struct_time,可选参数 secs 表示 1970-1-1 到现在的秒数,若 secs 参数未输入则默认为当前时间
gmtime() 函数的语法: time.gmtime([secs])
代码:
1 import time 2 3 print('time.gmtime(): ', time.gmtime()) 4 # 输出: 5 # time.gmtime(): time.struct_time(tm_year=2018, tm_mon=4, tm_mday=17, tm_hour=7, tm_min=32, tm_sec=54, tm_wday=1, tm_yday=107, tm_isdst=0)
mktime(t) 函数
mktime() 函数用于执行与 gmtime()、localtime() 相反的操作,接收 struct_time 对象作为参数,返回用秒表示时间的浮点数。如果输入不合法的时间则触发 OverflowError 或 ValueError 异常
代码:
1 import time 2 3 t = (2018, 4, 17, 15, 20, 12, 1, 107, 0); 4 print('time.mktime(t): %f' % time.mktime(t)) 5 # 输出: 6 # time.mktime(t): 1523949612.000000
asctime([t]) 函数
asctime() 函数用于接收时间元组(struct_time)并返回一个可读形式为 Tue Apr 17 15:45:13 2018 的 24 个字符的字符串
部输出参数 t 则默认为当前时间点
代码:
1 import time 2 3 t = time.localtime() 4 print('time.asctime(t): %s' % time.asctime(t)) 5 # 输出: 6 # time.asctime(t): Tue Apr 17 15:45:13 2018
ctime([secs]) 函数
ctime 函数用于将一个时间戳转化为 time.asctime() 的形式。若为指定参数 secs 则默认将 time.time() 作为参数
代码:
1 import time 2 3 print('time.ctime(): %s' % time.ctime()) 4 # 输出: 5 # time.ctime(): Tue Apr 17 15:51:00 2018
sleep(secs) 函数
sleep() 函数用于推迟调用线程的运行,可通过参数 secs 指定进程挂起的时间
sleep() 函数语法:time.sleep(escs) //其中 time 是指 time 模块,secs 指推迟执行的秒数,此函数没有返回值
1 import time 2 3 print('start: %s' % time.ctime()) 4 time.sleep(5) 5 print('end: %s' % time.ctime()) 6 # 输出: 7 # start: Tue Apr 17 16:00:16 2018 8 # end: Tue Apr 17 16:00:21 2018
clock() 函数
clock() 函数用于以浮点数计算的秒数返回当前 cpu 时间,用来衡量不同程度程序的耗时。该函数在不同的系统上含义不同。在 UNIX 系统上,返回的是 “进程时间”,是用秒表示的浮点数(时间戳)。在 Windows 中,第一次调用返回的是进程运行的实际时间,第二次之后的调用返回的是自第一次调用后到现在的运行时间
代码:
1 import time 2 3 def procedure(): 4 time.sleep(2) 5 6 #measure process time 7 procedure()#sleep的时间不算程序运行的时间,sleep()是没有占用cpu 8 t1 = time.clock() 9 print(t1)#程序运行的时间 10 procedure() 11 print('seconds process time: ', time.clock())#第一次调用clock到本次调用clock的时间间隔 12 13 #measure wall time 14 t2 = time.time() 15 procedure() 16 print('seconds wall time: ', time.time() - t2) 17 # 输出: 18 # 0.0 19 # seconds process time: 2.0004229494329526 20 # seconds wall time: 2.000399351119995
strftime(format[, t]) 函数
用于接收时间 struct_time 元组,并返回可读字符串表示的当地时间,格式由参数 format 决定
time 指的是 time 模块,format 指格式化字符串,t 指可选的参数,是一个 struct_time 对象
代码:
1 import time 2 3 t = (2016, 9, 25, 17, 50, 38, 6, 48, 0) 4 t = time.mktime(t)#将 struct_time 转换成浮点秒数 5 print(time.strftime('%b %d %Y %H : %M : %S', time.gmtime(t)))#gmtime()将时间戳转换成0时区struct_time 6 # 输出: 7 # Sep 25 2016 09 : 50 : 38
strptime(string[, format]) 函数
strptime 函数用于根据指定的格式把一个时间字符串解析成时间元组 struct_time,和 strftime 的作用刚好相反
其中 time 指的是 time 模块,string 指时间字符串,format 指格式化字符串
代码:
1 import time 2 3 struct_time = time.strptime("25 Sep 16", "%d %b %y") 4 print(struct_time) 5 # 输出: 6 # time.struct_time(tm_year=2016, tm_mon=9, tm_mday=25, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=269, tm_isdst=-1)
datetime 模块
today()
语法:datetime.datetime.today() //其中 datetime.datime 指的是 datetime.datime 类
代码:
1 import datetime 2 3 print('today is: ', datetime.datetime.today()) 4 # 输出: 5 # today is: 2018-04-19 19:38:59.625746
now([tz])
语法: datetime.datetime.now([tz]) // 后去 tz 参数所指时区的本地时间
代码:
1 import datetime 2 3 print('now is: ', datetime.datetime.now()) 4 # 输出: 5 # now is: 2018-04-19 19:42:43.731264
datetime.utcnow()
语法:datetime.datetime.utcnow() //返回一个当前 utc 时间的 datetime 对象
代码:
1 import datetime 2 3 print('utcnow is: ', datetime.datetime.utcnow()) 4 # 输出: 5 # utcnow is: 2018-04-19 11:46:16.801027
fromtimestmap(timestamp[, tz])
根据时间戳创建一个 datetime 对象。其中 tz 指定时区信息。返回一个 datetime 对象
代码:
1 import datetime, time 2 3 print('fromtimestamp is: ', datetime.datetime.fromtimestamp(time.time())) 4 # 输出: 5 # fromtimestamp is: 2018-04-19 19:50:01.279816
utcfromtimestamp(timestamp)
根据时间戳创建一个 datetime 对象。其中,timestamp 指时间戳,返回一个 datetime 对象
代码:
1 import datetime, time 2 3 print('utcfromtimestamp is: ', datetime.datetime.utcfromtimestamp(time.time())) 4 # 输出: 5 # utcfromtimestamp is: 2018-04-19 11:54:30.934395
strptime(date_string, format)
将格式字符串转换成 datetime 对象
其中 date_string 指日期字符串,format 为格式化方式,返回一个 datetime 对象
代码:
1 import datetime 2 3 dt = datetime.datetime.now() 4 print('strptime is: ', dt.strptime(str(dt), '%Y-%m-%d %H:%M:%S.%f')) 5 # 输出: 6 # strptime is: 2018-04-19 20:07:49.020946
strftime(format)
将格式化字符串转换为 datetime 对象
其中 format 为格式化方式
代码:
1 import datetime 2 3 dt = datetime.datetime.now() 4 print('strftime is:', dt.strftime('%Y-%m-%d %H:%M:%S')) 5 # 输出: 6 # strftime is: 2018-04-19 20:11:17
calendar 模块(日历)
calendar.calendar(year, w = 2, l = 1, c = 6)
该函数返回一个多行字符串格式的 year 年历,3 个月一行,间隔距离为 c。每日宽度间隔为 w 字符。每行长度为 21 * w + 18 + 2 * c。l 是每星期行数
代码:
1 import calendar 2 3 print(calendar.calendar(2018, w = 2, l = 1, c = 6)) 4 ''' 5 输出: 6 2018 7 8 January February March 9 Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 10 1 2 3 4 5 6 7 1 2 3 4 1 2 3 4 11 8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11 12 15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18 13 22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25 14 29 30 31 26 27 28 26 27 28 29 30 31 15 16 April May June 17 Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 18 1 1 2 3 4 5 6 1 2 3 19 2 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 10 20 9 10 11 12 13 14 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17 21 16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30 23 30 24 25 July August September 26 Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 27 1 1 2 3 4 5 1 2 28 2 3 4 5 6 7 8 6 7 8 9 10 11 12 3 4 5 6 7 8 9 29 9 10 11 12 13 14 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16 30 16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23 31 23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30 32 30 31 33 34 October November December 35 Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 36 1 2 3 4 5 6 7 1 2 3 4 1 2 37 8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9 38 15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16 39 22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23 40 29 30 31 26 27 28 29 30 24 25 26 27 28 29 30 41 31 42 '''
calendar.isleap(year)
如果是闰年就返回 True,否则返回 False
代码:
1 import calendar 2 3 print(calendar.isleap(2018)) 4 # 输出: 5 # False
calendar.leapdays(y1, y2)
返回 y1, y2 之间的闰年总数