几乎所有的正式代码中,我们都需要与时间打交道。在Python中,与时间处理有关的模块包括time
,datetime
以及calendar
,本节主要讲解time模块。
在Python中,用三种方式来表示时间,分别是时间戳、格式化时间字符串和结构化时间
时间戳(
timestamp
):也就是1970年1月1日之后的秒,例如1506388236.216345,可以通过time.time()
获得。时间戳是一个浮点数,可以进行加减运算,但请注意不要让结果超出取值范围。格式化的时间字符串(
string_time
):也就是年月日时分秒这样的我们常见的时间字符串,例如2017-09-26 09:12:48
,可以通过time.localtime()
获得;结构化时间(
struct_time
):一个包含了年月日时分秒的多元元组,例如time.struct_time(tm_year=2017, tm_mon=9, tm_mday=26, tm_hour=9, tm_min=14, tm_sec=50, tm_wday=1, tm_yday=269, tm_isdst=0)
,可以通过time.strftime('%Y-%m-%d')
获得。
由于Python的time模块实现主要调用C库,所以各个平台可能有所不同。time模块目前只支持到2038年前。如果需要处理范围之外的日期,请使用datetime模块。
UTC(Coordinated Universal Time,世界协调时),亦即格林威治天文时间,世界标准时间。我们中国为东八区,比UTC早8个小时,也就是UTC+8。关于UTC的缩写,有个故事,你可能已经注意到了,按英文的缩写,应该是CUT,而不是UTC。但是世界协调时在法文中的缩写是TUC,两国互相不让,作为妥协,最后干脆简称UTC。
DST(Daylight Saving Time)即夏令时。
一、结构化时间(struct_time
)
使用time.localtime()
等方法可以获得一个结构化时间元组。
>>> time.localtime()
time.struct_time(tm_year=2017, tm_mon=9, tm_mday=26, tm_hour=10, tm_min=6, tm_sec=49, tm_wday=1, tm_yday=269, tm_isdst=0)
结构化时间元组共有9个元素,按顺序排列如下表:
既然结构化时间是一个元组,那么就可以通过索引进行取值,也可以进行分片,或者通过属性名获取对应的值。
>>>import time
>>> lt = time.localtime()
>>> lt
time.struct_time(tm_year=2017, tm_mon