时间
Python 中有几个和时间相关的库:
- 内置
timedatetimecalendarzoneinfo
- CPython 团队维护的 PyPI 库
tzdata
- 第三方库
- dateutil:Python 官方推荐,最完善
time
主要以 epoch 秒数为核心。
import time
# 显示当前 epoch 秒数,如 1631621300.4041824
time.time()
# 显示当前 UTC 时间
time.gmtime()
# 返回这个,注意这个时没有时区信息的,精度也不是最高,只到秒
time.struct_time(
tm_year=2021,
tm_mon=9,
tm_mday=14,
tm_hour=12,
tm_min=7,
tm_sec=44,
tm_wday=1,
tm_yday=257,
tm_isdst=0 # 是否是 DST(Daylight Saving Time)
)
# 本地时间版本,也没有时区信息哦
time.localtime()
# 当前线程 sleep 12 秒
time.sleep(12)
time 库还有很多和 CPU 时钟、线程时间有关的函数。
datetime
更多有关日期和时间的功能,注意这里都是理想化的时间,即假定每天都是 24 × 60 × 60 秒,不存在闰秒等,更别说相对论效应了。😎
包含如下类(嵌套表示继承关系):
datetime.time:时、分、秒、微秒(microsecond,μs,10−6 秒、时区信息)datetime.date:年、月、日datetime.datetime:上述两者结合
datetime.timedelta:周、天、时、分、秒、毫秒、微秒,实际存储时只有天、秒、微妙datetime.tzinfo:抽象类,包含时区名称、时区 offset 和 DST 信息datetime.timezone:DST 为None,另含一个具体的 UTC 时区(datetime.timezone.utc)
判断时间(datetime.datetime 和 datetime.time)是否是确定的方法见 Python 文档。
此处仅展示最精确的带时区信息的 datetime.datetime 的例子:
from datetime import datetime, timezone
now = datetime.now(tz=timezone.utc)