跳转至

时间

Python 中有几个和时间相关的库:

  1. 内置
    1. time
    2. datetime
    3. calendar
    4. zoneinfo
  2. CPython 团队维护的 PyPI 库
    1. tzdata
  3. 第三方库
    1. 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 秒,不存在闰秒等,更别说相对论效应了。😎

包含如下类(嵌套表示继承关系):

  1. datetime.time:时、分、秒、微秒(microsecond,μs,10−6 秒、时区信息)
  2. datetime.date:年、月、日
    1. datetime.datetime:上述两者结合
  3. datetime.timedelta:周、天、时、分、秒、毫秒、微秒,实际存储时只有天、秒、微妙
  4. datetime.tzinfo:抽象类,包含时区名称、时区 offset 和 DST 信息
    1. datetime.timezone:DST 为 None,另含一个具体的 UTC 时区(datetime.timezone.utc

判断时间(datetime.datetimedatetime.time)是否是确定的方法见 Python 文档

此处仅展示最精确的带时区信息的 datetime.datetime 的例子:

from datetime import datetime, timezone

now = datetime.now(tz=timezone.utc)