好的,我来帮你系统梳理 Python datetime 库的日期与时间操作,从基础概念到常用方法和示例,方便快速掌握。


1️⃣ datetime 模块简介

  • datetime 是 Python 内置模块,用于处理 日期和时间
  • 核心类:类说明date处理 日期(年、月、日)time处理 时间(时、分、秒、微秒)datetime处理 日期+时间timedelta表示 时间间隔(加减时间)timezone时区信息

2️⃣ 获取当前日期与时间

from datetime import datetime, date, time

# 当前日期时间
now = datetime.now()
print(now)  # 2025-09-02 10:25:30.123456

# 当前日期
today = date.today()
print(today)  # 2025-09-02

# 当前时间
t = time(14, 30, 15)  # 指定时间
print(t)  # 14:30:15


3️⃣ 创建指定日期和时间

from datetime import datetime, date

# 创建日期对象
d = date(2025, 9, 2)
print(d)  # 2025-09-02

# 创建时间对象
from datetime import time
t = time(12, 45, 30)
print(t)  # 12:45:30

# 创建完整 datetime
dt = datetime(2025, 9, 2, 12, 45, 30)
print(dt)  # 2025-09-02 12:45:30


4️⃣ 日期时间格式化

4.1 strftime():datetime → 字符串

now = datetime.now()
print(now.strftime("%Y-%m-%d %H:%M:%S"))  # 2025-09-02 10:25:30
print(now.strftime("%A, %d %B %Y"))      # Tuesday, 02 September 2025

常用格式:

格式含义
%Y四位年
%m月(01-12)
%d日(01-31)
%H24小时制小时
%M分钟
%S
%A星期几全称
%B月份全称

4.2 strptime():字符串 → datetime

from datetime import datetime

dt_str = "2025-09-02 14:30:00"
dt = datetime.strptime(dt_str, "%Y-%m-%d %H:%M:%S")
print(dt)  # 2025-09-02 14:30:00


5️⃣ 日期时间运算

使用 timedelta

from datetime import datetime, timedelta

now = datetime.now()
# 增加 5 天
future = now + timedelta(days=5)
print(future)

# 减少 2 小时
past = now - timedelta(hours=2)
print(past)

# 时间差
delta = future - now
print(delta.days, delta.seconds)


6️⃣ 获取日期时间属性

dt = datetime(2025, 9, 2, 14, 30, 15)
print(dt.year)   # 2025
print(dt.month)  # 9
print(dt.day)    # 2
print(dt.hour)   # 14
print(dt.minute) # 30
print(dt.second) # 15
print(dt.weekday()) # 0=周一, 6=周日


7️⃣ 时区操作

from datetime import datetime, timezone, timedelta

# UTC 时间
utc_now = datetime.now(timezone.utc)
print(utc_now)

# 转为北京时间(UTC+8)
bj_time = utc_now.astimezone(timezone(timedelta(hours=8)))
print(bj_time)


8️⃣ 总结

  • 核心类datetimedatetimetimedeltatimezone
  • 常用操作
    1. 获取当前日期时间:datetime.now()、date.today()
    2. 创建日期时间:datetime(2025, 9, 2, 12, 0, 0)
    3. 格式化与解析:strftime()、strptime()
    4. 日期计算:timedelta(days=5, hours=2)
    5. 时区转换:astimezone()
  • 应用场景:日志时间处理、时间差计算、定时任务、日期格式化等