Python 的 datetime 模块使用详解
Python 的 datetime
模块提供了处理日期和时间的类和方法,用于操作日期、时间、时间差、时区等。以下是常用类和函数的使用说明:
主要类
datetime.date
处理日期(年、月、日)。
datetime.time
处理时间(时、分、秒、微秒),不包含日期。
datetime.datetime
同时处理日期和时间(最常用)。
datetime.timedelta
表示时间差(如天、秒、微秒),用于日期/时间的加减操作。
datetime.tzinfo
时区信息基类(需自定义或使用第三方库如 pytz
)。
常用方法及示例
1. 获取当前日期和时间
from datetime import datetime
now = datetime.now() # 当前本地时间
utc_now = datetime.utcnow() # 当前UTC时间
print(now) # 输出示例: 2023-10-05 14:30:45.123456
2. 创建自定义日期/时间对象
from datetime import datetime, date, time
# 创建一个 datetime 对象
dt = datetime(2023, 10, 5, 15, 30, 0)
print(dt) # 2023-10-05 15:30:00
# 创建一个 date 对象
d = date(2023, 10, 5)
print(d) # 2023-10-05
# 创建一个 time 对象
t = time(15, 30, 0)
print(t) # 15:30:00
3. 时间差计算(timedelta
)
from datetime import datetime, timedelta
now = datetime.now()
# 加一天
future = now + timedelta(days=1)
# 减两小时
past = now - timedelta(hours=2)
print(future)
print(past)
4. 格式化日期时间(strftime
)
将 datetime
对象转换为字符串:
dt = datetime.now()
formatted = dt.strftime("%Y-%m-%d %H:%M:%S")
print(formatted) # 输出示例: 2023-10-05 15:30:00
5. 解析字符串为日期时间(strptime
)
将字符串转换为 datetime
对象:
date_str = "2023-10-05 15:30:00"
dt = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print(dt) # 2023-10-05 15:30:00
6. 提取日期或时间的部分
dt = datetime.now()
year = dt.year
month = dt.month
day = dt.day
hour = dt.hour
minute = dt.minute
second = dt.second
print(f"{year}-{month}-{day} {hour}:{minute}:{second}")
7. 时区处理(需结合 pytz
库)
from datetime import datetime
import pytz
# 创建带时区的时间
tz = pytz.timezone("Asia/Shanghai")
dt = datetime.now(tz)
print(dt) # 2023-10-05 15:30:00+08:00
# 转换时区
utc_dt = dt.astimezone(pytz.utc)
print(utc_dt) # 2023-10-05 07:30:00+00:00
常用格式化符号
符号 | 含义 | 示例 |
---|---|---|
%Y | 四位年份 | 2023 |
%m | 两位月份 | 10 |
%d | 两位日期 | 05 |
%H | 24小时制小时 | 15 |
%M | 分钟 | 30 |
%S | 秒 | 00 |
%A | 星期全名 | Monday |
%a | 星期缩写 | Mon |
%B | 月份全名 | October |
%b | 月份缩写 | Oct |
注意事项
-
时区支持:Python 内置的
datetime
对时区处理有限,推荐使用第三方库pytz
或 Python 3.9+ 的zoneinfo
。 -
日期范围:
datetime
支持的日期范围通常为 1-9999 年。