在 Python 中,日期与时间处理主要使用标准库 datetime:获取当前时刻、构造指定时间、用 strftime 格式化为字符串、用 strptime 从字符串解析,以及用 timedelta 表示间隔并参与加减。仅需日期或时刻时,可分别使用 date、time。本节说明上述类型的基本用法。
当前时间
from datetime import datetime
now = datetime.now()
print(now)
print(now.year, now.month, now.day)
print(now.hour, now.minute, now.second)构造指定时间
from datetime import datetime
dt = datetime(2024, 1, 15, 10, 30, 0)
print(dt)strftime:格式化为字符串
将 datetime 转为指定格式的字符串。常用格式码见下表:
from datetime import datetime
now = datetime.now()
print(now.strftime("%Y-%m-%d"))
print(now.strftime("%Y/%m/%d %H:%M"))
print(now.strftime("%A"))| 格式码 | 含义 |
|---|---|
%Y | 四位年份 |
%m | 两位月份 |
%d | 两位日期 |
%H / %M / %S | 时 / 分 / 秒 |
%A / %a | 星期全称 / 缩写 |
%B / %b | 月份全称 / 缩写 |
strptime:从字符串解析
与 strftime 方向相反:按格式码将字符串解析为 datetime。格式与文本不一致时将引发 ValueError:
from datetime import datetime
s = "2024-01-15 10:30"
dt = datetime.strptime(s, "%Y-%m-%d %H:%M")
print(dt)
print(dt.month)时间差 timedelta
timedelta 表示时间间隔,可与 datetime 相加或相减,也可比较先后:
from datetime import datetime, timedelta
now = datetime.now()
future = now + timedelta(days=7)
print(future)
diff = future - now
print(diff.days)
print(diff.total_seconds())
if future > now:
print("future 更晚")date 与 time
from datetime import date, time
d = date.today()
print(d)
t = time(14, 30)
print(t)常见错误
strftime表示 format(对象→字符串),strptime表示 parse(字符串→对象),名称易记混。datetime.now()一般为本地时区;需要 UTC 时可使用带时区信息的 API,例如datetime.now(timezone.utc)。strptime对格式要求严格,多余空格或位数不符均可能失败。
本节说明了 Python 中 datetime 的常用类型与格式化。下一节介绍math 与 random:数值函数与随机抽样。