- 在python中,通常有这几种方式来表示时间
- 1.时间戳
- 2.格式化的时间字符串
- 3.元组(struct_time)共九个元素。由于python的time模块实现主要调用C库,所以各个平台可能有所不同
- 几个定义
- UTC:世界标准时间。在中国,为UTC+8。
- DST即夏令时
- 时间戳(timestamp)的方式:通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型
- 元组(struct_time)方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。下面列出这种方式元组中的几个元素:
-
索引(Index) 属性(Attribute) 值(Values) 0 tm_year(年) 比如2011 1 tm_mon(月) 1 - 12 2 tm_mday(日) 1 - 31 3 tm_hour(时) 0 - 23 4 tm_min(分) 0 - 59 5 tm_sec(秒) 0 - 61 6 tm_wday(weekday) 0 - 6(0表示周日) 7 tm_yday(一年中的第几天) 1 - 366 8 tm_isdst(是否是夏令时) 默认为-1
- time模块的方法
- (1)time.time():返回当前时间的时间戳
- (2)time.localtime([secs]):将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准
- (3)time.gmtime([secs]):和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。
-
1 print(time.time())#当前时间戳 1512992826.3101041 2 print(time.localtime())#当前时间 3 #time.struct_time(tm_year=2017, tm_mon=12, tm_mday=11, tm_hour=19, tm_min=47, tm_sec=6, tm_wday=0, tm_yday=345, tm_isdst=0) 4 print(time.localtime(1000)) 5 #time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=16, tm_sec=40, tm_wday=3, tm_yday=1, tm_isdst=0) 6 print(time.gmtime())#0时区时间 7 #time.struct_time(tm_year=2017, tm_mon=12, tm_mday=11, tm_hour=11, tm_min=47, tm_sec=6, tm_wday=0, tm_yday=345, tm_isdst=0) 8 print(time.gmtime(1000)) 9 #time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=16, tm_sec=40, tm_wday=3, tm_yday=1, tm_isdst=0)
- (4)time.mktime(t):将一个struct_time转化为时间戳。
- (5)time.sleep(secs):线程推迟指定的时间运行。单位为秒
- (6)time.asctime([t]):把一个表示时间的元组或者struct_time表示为这种形式:'Sun Oct 1 12:04:38 2017'。如果没有参数,将会将time.localtime()作为参数传入。
- (7)time.ctime([secs]):把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。
-
1 a = time.localtime() 2 print(time.mktime(a))#把时间转换为时间戳,1512993116.0 3 time.sleep(0.5)#延时 4 print(time.asctime(a))#把时间转换为Mon Dec 11 19:51:56 2017格式 5 print(time.asctime())#默认为转换当前时间Mon Dec 11 19:51:56 2017 6 print(time.ctime(1511872)) #把指定时间戳转换为上面的格式Sun Jan 18 19:57:52 1970 7 print(time.ctime())#默认把当前的时间戳转换为上面的格式Mon Dec 11 19:51:56 2017
- (8)time.strftime(format[, t]):把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。
- (9)time.strptime()
- 举例:time.strptime('2017-10-3 17:54',"%Y-%m-%d %H:%M") #输出 time.struct_time(tm_year=2017, tm_mon=10, tm_mday=3, tm_hour=17, tm_min=54, tm_sec=0, tm_wday=1, tm_yday=276, tm_isdst=-1)
-
1 b = time.strftime('%Y-%m-%d %H:%M:%S')#把时间转换为指定格式输出,可指定时间,默认为当前时间 2 print(b)# 2017-12-11 19:54:58 3 print(type(b))#<class 'str'> 4 print(time.strptime(b,'%Y-%m-%d %H:%M:%S'))#把指定格式的时间转换为时间对象,可再通过mktime转换为时间戳 5 #time.struct_time(tm_year=2017, tm_mon=12, tm_mday=11, tm_hour=19, tm_min=54, tm_sec=58, tm_wday=0, tm_yday=345, tm_isdst=-1)
-