Python time
最后修改于 2024 年 1 月 29 日
Python time 教程展示了如何使用标准的 time 模块在 Python 中处理时间。
Python time 模块
time 模块是一个标准的 Python 模块,包含时间访问和转换函数。请注意,此模块存在限制;例如,这些函数可能无法处理纪元之前或未来的日期和时间。
其他与时间相关的功能可以在标准的 datetime 和 calendar 模块,或第三方 arrow 模块中找到。
Python 时间结构
包括 time.gmtime、time.localtime 和 time.asctime 在内的几个函数都使用 time.struct_time 对象。
time.struct_time(tm_year=2021, tm_mon=6, tm_mday=27, tm_hour=14, tm_min=12,
tm_sec=20, tm_wday=6, tm_yday=178, tm_isdst=1)
这是一个时间结构的示例。
| 索引 | 属性 | 值 |
|---|---|---|
| 0 | tm_year |
0000, ...., 2021, ..., 9999 |
| 1 | tm_mon |
1, 2, ..., 12 |
| 2 | tm_mday |
1, 2, ..., 31 |
| 3 | tm_hour |
0, 1, ..., 23 |
| 4 | tm_min |
0, 1, ..., 59 |
| 5 | tm_sec |
0, 1, ..., 61 |
| 6 | tm_wday |
0, 1, ..., 6;星期一为 0 |
| 7 | tm_yday |
1, 2, ..., 366 |
| 8 | tm_isdst |
0, 1 或 -1 |
time.struct_time 对象的值可以通过索引和属性访问。我们可以使用 time.asctime 函数将 time.struct_time 转换为标准的、人类可读的字符串格式。
Python time 纪元
纪元是选择为特定时代原点的某个时间点。Unix 纪元是 1970 年 1 月 1 日 00:00:00 UTC(或 ISO 8601 的 1970-01-01T00:00:00Z)。
#!/usr/bin/python import time e = time.gmtime(0) print(e) print(e.tm_year, e.tm_mon, e.tm_mday)
该示例打印平台的纪元
e = time.gmtime(0)
要获取纪元,我们将 0 传递给 time.gmtime 函数。
$ ./epoch.py
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0,
tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
1970 1 1
Python time.time
time.time 函数返回自纪元以来的秒数,以浮点数形式表示。
#!/usr/bin/python import time t = time.time() print(t)
该示例返回自纪元以来的秒数。
$ date +%s 1624795343 $ ./time_fun.py 1624795347.1246026
Python time.localtime
time.localtime 函数将以自纪元以来秒数表示的时间转换为本地时间结构。
#!/usr/bin/python
import time
secs = time.time()
loc_time = time.localtime(secs)
print(f'local time: {loc_time}')
print(loc_time.tm_year)
print(loc_time.tm_mon)
print(loc_time.tm_mday)
print('-------------------------')
print(loc_time[0])
print(loc_time[1])
print(loc_time[2])
我们使用 time.time 函数获取经过的秒数,并将其传递给 time.localtime 函数。我们得到
$ ./loc_time.py
local time: time.struct_time(tm_year=2021, tm_mon=6, tm_mday=27, tm_hour=14,
tm_min=20, tm_sec=15, tm_wday=6, tm_yday=178, tm_isdst=1)
2021
6
27
-------------------------
2021
6
27
Python time.ctime
time.ctime 函数将以自纪元以来秒数表示的时间转换为特定的字符串格式,表示本地时间。
#!/usr/bin/python
import time
secs = time.time()
loc_time = time.ctime(secs)
print(f'local time: {loc_time}')
该示例使用 time.ctime 函数将以自纪元以来秒数表示的时间转换为人类可读的时间格式。
$ ./loc_time2.py local time: Sun Jun 27 14:46:18 2021
Python time.gmtime
time.gmtime 将以自纪元以来秒数表示的时间转换为 UTC 时间结构。
有一个实际需求是全球统一时间。全球统一时间有助于避免时区和夏令时带来的混淆。UTC(协调世界时)被选作主要的时间标准。UTC 用于航空、天气预报、飞行计划、空中交通管制许可和地图。与本地时间不同,UTC 不会因季节变化而改变。
#!/usr/bin/python
import time
utc = time.gmtime()
print(utc)
print('--------------------')
print(utc.tm_year)
print(utc.tm_mon)
print(utc.tm_mday)
print(utc.tm_hour)
该示例打印协调世界时。
$ ./utc_time.py
time.struct_time(tm_year=2021, tm_mon=6, tm_mday=27, tm_hour=12, tm_min=55,
tm_sec=31, tm_wday=6, tm_yday=178, tm_isdst=0)
--------------------
2021
6
27
12
Python time.asctime
time.asctime 函数将 time.struct_time 转换为标准的、人类可读的字符串格式。
#!/usr/bin/python import time loc = time.localtime() utc = time.gmtime() print(time.asctime(loc)) print(time.asctime(utc))
借助 time.asctime,我们打印本地时间和 UTC 时间。
$ ./asc_time.py Sun Jun 27 15:06:15 2021 Sun Jun 27 13:06:15 2021
Python time.strptime
time.strptime 函数根据指定的格式解析表示时间的字符串。返回值是时间结构。
#!/usr/bin/python import time v1 = '2021-06-25' v2 = '25/11/2020' d1 = time.strptime(v1, '%Y-%m-%d') print(time.asctime(d1)) d2 = time.strptime(v2, '%d/%m/%Y') print(time.asctime(d2))
该示例日期以两种不同的格式表示。
$ ./parse_time.py Fri Jun 25 00:00:00 2021 Wed Nov 25 00:00:00 2020
Python time.strftime
time.strftime 函数根据格式参数将表示时间的 time 结构转换为字符串。
#!/usr/bin/python
import time
loc = time.localtime()
print(time.strftime('%Y-%m-%d', loc))
print(time.strftime('%c', loc))
print(time.strftime('%A', loc))
print(time.strftime('%B', loc))
print(time.strftime("%H:%M:%S", loc))
该示例使用 time.localtime 获取以 time 结构表示的本地时间。然后,它将返回值格式化为不同的时间格式。
$ ./format_time.py 2021-06-27 Sun Jun 27 15:17:37 2021 Sunday June 15:17:37
来源
在本文中,我们使用了 Python 的 time 模块。
作者
列出所有 Python 教程。