UTC & Local
time 是python的一个模块,其中又有一个同名函数time
,返回当前到所谓epoch,即1970.1.1的秒数,不过与Unix不太一样的是,这厮返回的是一个精确度更高的浮点数
说time操作之前,必须说UTC
- UTC:Universal Time Coordinated,传说中的世界调整时间,全世界的时间都统一到UTC来。前身就是GMT(Greenwich Mean Time,小时候地理教的格林威治时间便是啦)
time.gmtime([secs])
:gm就是greenwich mean的意思,所以函数把指定秒数转换成UTC
time.localtime([secs])
:本地时间,顾名思义就是时区相关的,而非UTC
以上两者都是返回time.struct_time
对象的
import time
# 先来看时区信息
>>>time.tzname
('CST', 'CST')
CST表示 China Standard Time,tuple的第二个元素表示夏令时下的时区信息,你说什么夏令时是什么鬼啊?自己google去,反正咱天朝没用。
>>>secs = time.time()
>>>secs
1425886401.555671 # 看到好多小数位了吧
>>>time.gmtime(secs)
time.struct_time(tm_year=2015, tm_mon=3, tm_mday=9, tm_hour=7, tm_min=33, tm_sec=21, tm_wday=0, tm_yday=68, tm_isdst=0) #注意tm_hour是7
>>>time.localtime(secs)
time.struct_time(tm_year=2015, tm_mon=3, tm_mday=9, tm_hour=15, tm_min=33, tm_sec=21, tm_wday=0, tm_yday=68, tm_isdst=0) #注意tm_hour是15
好了,不是很复杂的东西
time.mktime(tuple)
:t是一个time.struct_time
对象(或者duck-type的符合要求的9-tuple)。是localtime
的反操作,也就是说,tuple是被认为是local时间而非UTC
calendar.timegm(tuple)
:类似mktime
,不过是gmtime
的反操作。
>>>local_t = time.localtime(secs) # local_t是struct_time
>>>time.mktime(local_t)
1425886401.0 # 同样是小数,不过比time()返回的精确度低了
>>>import calendar
>>>gm_t = time.gmtime(secs)
>>>calendar.timegm(gm_t)
1425886401 # 不是小数了,果然不是同个模块的态度就是不一样
Time和字符串
前面的操作还是围绕time.struct_time
。有时我们还是希望直接输出字符串的
time.strftime(format[, t])
:string from time,format是字符串格式,这就牵涉到一堆格式directive了,用到的时候查文档即可。而t
一个time.struct_time
,可由gmtime()
或localtime()
返回
time.strptime(string[,format])
:strftime
的反操作,将string以format格式转成一个struct_time
并返回
每次python一下,记录一下