和时间有关系的我们就要用到时间模块。
表示时间的三种方式:
(1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。1970年1月1 是英国时间
(2)格式化的时间字符串(Format String): ‘1999-12-06’
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%H 24小时制小时数(0-23)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%b 本地简化的月份名称
%d 月内中的一天(0-31)
(3)元组(struct_time) :struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
import time # 导入时间模块 # 时间戳 time.time() # 加print后,1569239423.635975 # 时间字符串 time.strftime("%Y-%m-%d %X") # 2019-09-23 19:50:55 time.strftime("%Y-%m-%d %H-%M-%S") # 2019-09-23 19-51-13 标准时间 # 时间元组: localtime将一个时间戳转换为当前时区的struct_time print(time.localtime()) # time.struct_time(tm_year=2019, tm_mon=9, tm_mday=23, tm_hour=19, tm_min=51, tm_sec=13, tm_wday=0, tm_yday=266, tm_isdst=0)
几种格式之间的转换
import time # 格式化时间 <----> 结构化时间 ft = time.strftime('%Y/%m/%d %H:%M:%S') # 注意是大写的Y print(ft) # 2019/09/23 19:57:20 st = time.strptime(ft,'%Y/%m/%d %H:%M:%S') print(st) # time.struct_time(tm_year=2019, tm_mon=9, tm_mday=23, tm_hour=19, tm_min=57, tm_sec=20, tm_wday=0, tm_yday=266, tm_isdst=-1) # 结构化时间 <---> 时间戳 import time p = time.strptime('2015-8-8','%Y-%m-%d') t = time.mktime(p) print(t) # 1438963200.0 t = time.time() st = time.localtime(t) print(st)# time.struct_time(tm_year=2019, tm_mon=9, tm_mday=23, tm_hour=20, tm_min=2, tm_sec=48, tm_wday=0, tm_yday=266, tm_isdst=0)
asctime([t]) 函数
该函数用于接收由 gmtime() 和 localtime() 函数返回的struct_time,并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。
如果不传参数,直接返回当前时间的格式化串。
import time time.asctime(time.localtime(1500000000)) # Fri Jul 14 10:40:00 2017 time.asctime() # Mon Sep 23 21:26:09 2019 print(time.strftime('%c')) # Mon Sep 23 21:26:09 2019 print(time.ctime()) # Mon Sep 23 21:26:09 2019
ctime([ secs ])
用于把一个时间戳转换为time.asctime()的形式。如果未给参数 secs 或参数为 None,就会默认将 time.time() 作为参数。
print(time.ctime()) # Mon Sep 23 21:30:31 2019 print(time.ctime(1500000000)) # Fri Jul 14 10:40:00 2017
计算时间差
import time time1=time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S')) time2=time.mktime(time.strptime('2017-09-12 11:00:06','%Y-%m-%d %H:%M:%S')) diff_time=time2-time1 print(time1,time2,diff_time) #1505089800.0 1505185206.0 95406.0 struct_time=time.gmtime(diff_time) print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1,struct_time.tm_mday-1, struct_time.tm_hour,struct_time.tm_min,struct_time.tm_sec))
输出结果:
1505089800.0 1505185206.0 95406.0
过去了0年0月1天2小时30分钟6秒