Python3 日期和时间
处理日期和时间是编程中的高频需求:记录日志、统计报表、计算倒计时都离不开它。Python 标准库 datetime 模块提供 datetime、date、time、timedelta 等类,可方便地获取、运算和格式化时间。
核心类简介
| 类 | 作用 |
|---|---|
| datetime | 日期 + 时间,最常用 |
| date | 只表示日期(年、月、日) |
| time | 只表示时间(时、分、秒) |
| timedelta | 时间间隔,用于日期运算 |
获取当前时间
from datetime import datetime, date, time
now = datetime.now() # 当前日期时间
print(now) # 输出:2025-01-06 10:30:45.123456
print(date.today()) # 输出:2025-01-06
print(time(10, 30, 45)) # 输出:10:30:45
print(datetime(2025, 1, 6, 10, 30)) # 构造指定时间,输出:2025-01-06 10:30:00
取出年月日时分秒
from datetime import datetime
now = datetime.now()
print(now.year, now.month, now.day) # 输出:2025 1 6
print(now.hour, now.minute, now.second) # 输出:10 30 45
时间运算 timedelta
两个日期相减得到时间差,也可直接加/减天数与小时:
from datetime import datetime, timedelta
d1 = datetime(2025, 1, 1)
d2 = datetime(2025, 1, 10)
print((d2 - d1).days) # 输出:9
print(d1 + timedelta(days=30)) # 输出:2025-01-31 00:00:00
print(d1 + timedelta(hours=5)) # 输出:2025-01-01 05:00:00
print(d1 < d2) # 输出:True(可直接比较)
strftime 与 strptime
strftime 把日期格式化成字符串(输出),strptime 把字符串解析成日期(输入):
from datetime import datetime
s = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(s) # 输出:2025-01-06 10:30:45
dt = datetime.strptime("2025-01-01 08:00:00", "%Y-%m-%d %H:%M:%S")
print(dt) # 输出:2025-01-01 08:00:00
常用格式符
| 格式符 | 含义 | 示例 |
|---|---|---|
| %Y | 四位年份 | 2025 |
| %y | 两位年份 | 25 |
| %m | 月份(补零) | 01 |
| %d | 日(补零) | 06 |
| %H | 24 小时制小时 | 10 |
| %M | 分钟 | 30 |
| %S | 秒 | 45 |
| %A | 星期全名 | Monday |
时间戳转换
时间戳是自 1970-01-01 起的秒数,datetime 与时间戳可互转:
from datetime import datetime
now = datetime.now()
ts = now.timestamp() # 转成时间戳
print(ts) # 输出:1736141445.123456
print(datetime.fromtimestamp(ts)) # 还原,输出:2025-01-06 10:30:45.123456
time 模块简介
time 模块更底层:time.time() 返回时间戳,time.sleep() 暂停程序:
import time
print(time.time()) # 输出:1736141445.123456
time.sleep(2) # 程序暂停 2 秒
小结
datetime 负责"看得懂的时间"(对象运算与格式化),time 负责秒数与延时。记住 strftime 输出、strptime 解析、timedelta 做运算,日期处理就不难了。