几乎所有的正式代码中,我们都需要与时间打交道。在Python中,与时间处理有关的模块包括time,datetime以及calendar,本节主要讲解time模块。
在 Python 中,用三种方式来表示时间,分别是时间戳、格式化时间字符串和结构化时间
- 时间戳(timestamp):也就是 1970 年 1 月 1 日之后的秒,例如 1506388236.216345,可以通过time.time()获得。时间戳是一个浮点数,可以进行加减运算,但请注意不要让结果超出取值范围。
- 格式化的时间字符串(string_time):也就是年月日时分秒这样的我们常见的时间字符串,例如2017-09-26 09:12:48,可以通过time.strftime('%Y-%m-%d')获得;
- 结构化时间(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.localtime()获得。
由于 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 个元素,按顺序排列如下表:
索引 |
属性 |
取值范围 |
0 |
tm_year(年) |
比如2017 |
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 |