Python的datetime模块提供了强大的日期和时间处理工具。无论是生成报告、数据分析、事件调度还是处理时间戳,这个标准库都是每个Python开发者必备的技能。
datetime模块基础入门
导入与核心类
datetime是Python标准库的一部分,无需额外安装即可使用:
import datetime
from datetime import date, time, datetime, timedelta, timezone
模块中的核心类包括:
- datetime.date — 处理日期(年、月、日)
- datetime.time — 处理时间(时、分、秒)
- datetime.datetime — 同时包含日期和时间
- datetime.timedelta — 表示两个日期/时间之间的差值
- datetime.timezone — 处理时区信息
获取当前日期和时间
from datetime import datetime, date
# 获取当前日期和时间
now = datetime.now()
print(f"当前日期和时间:{now}")
# 仅获取当前日期
today = date.today()
print(f"今天的日期:{today}")
创建与操作日期
手动创建日期
from datetime import date, datetime
# 创建指定日期
custom_date = date(2025, 5, 9)
print(f"指定日期:{custom_date}")
# 创建指定日期和时间
custom_datetime = datetime(2025, 5, 9, 14, 30, 45)
print(f"指定日期和时间:{custom_datetime}")
提取日期各组成部分
today = date.today()
print(f"年份:{today.year}")
print(f"月份:{today.month}")
print(f"日:{today.day}")
print(f"星期几:{today.weekday()}") # 0 = 周一,6 = 周日
时间处理技巧
创建和操作时间对象
from datetime import time
# 创建指定时间
custom_time = time(14, 30, 45)
print(f"指定时间:{custom_time}")
# 提取时间各组成部分
print(f"小时:{custom_time.hour}")
print(f"分钟:{custom_time.minute}")
print(f"秒:{custom_time.second}")
获取带微秒的时间
from datetime import datetime
now = datetime.now()
print(f"带微秒的时间:{now}")
print(f"微秒数:{now.microsecond}")
日期算术运算
使用timedelta
from datetime import date, datetime, timedelta
# 日期加减操作
today = date.today()
tomorrow = today + timedelta(days=1)
last_week = today - timedelta(weeks=1)
next_month = today + timedelta(days=30)
print(f"明天:{tomorrow}")
print(f"一周前:{last_week}")
print(f"一个月后:{next_month}")
# 更复杂的运算
future_date = today + timedelta(days=100, hours=5, minutes=30)
print(f"100天5小时30分钟后:{future_date}")
计算日期差值
from datetime import date, datetime
start_date = date(2025, 1, 1)
end_date = date(2025, 12, 31)
# 计算天数差
difference = end_date - start_date
print(f"相差天数:{difference.days}")
# 计算秒数差(针对datetime对象)
start_time = datetime(2025, 5, 9, 10, 0, 0)
end_time = datetime(2025, 5, 9, 15, 30, 45)
time_diff = end_time - start_time
print(f"相差秒数:{time_diff.total_seconds()}")
print(f"相差小时数:{time_diff.total_seconds() / 3600}")
日期时间格式化
strftime方法详解
from datetime import datetime
now = datetime.now()
# 多种格式化输出
print(now.strftime("%Y-%m-%d")) # 2025-05-09
print(now.strftime("%Y年%m月%d日")) # 2025年05月09日
print(now.strftime("%H:%M:%S")) # 14:30:45
print(now.strftime("%A, %B %d, %Y")) # Friday, May 09, 2025