datetime 模块是 Python 中处理日期和时间的核心模块,提供了丰富的类和方法来处理日期、时间、时间间隔等。
主要类
1. datetime.date
处理日期(年、月、日)
from datetime import date
# 创建日期对象
today = date.today()
print(today) # 2023-11-10
# 指定日期
specific_date = date(2023, 12, 25)
print(specific_date) # 2023-12-25
# 获取日期组件
print(f"年: {today.year}, 月: {today.month}, 日: {today.day}")2. datetime.time
处理时间(时、分、秒、微秒)
from datetime import time
# 创建时间对象
t = time(14, 30, 45)
print(t) # 14:30:45
# 获取时间组件
print(f"时: {t.hour}, 分: {t.minute}, 秒: {t.second}")3. datetime.datetime
处理日期和时间
from datetime import datetime
# 当前日期和时间
now = datetime.now()
print(now) # 2023-11-10 14:30:45.123456
# 指定日期时间
dt = datetime(2023, 12, 25, 14, 30, 45)
print(dt) # 2023-12-25 14:30:45
# 获取日期和时间组件
print(f"年: {dt.year}, 月: {dt.month}, 日: {dt.day}")
print(f"时: {dt.hour}, 分: {dt.minute}, 秒: {dt.second}")4. datetime.timedelta
处理时间间隔
from datetime import datetime, timedelta
now = datetime.now()
# 加一天
tomorrow = now + timedelta(days=1)
print(tomorrow)
# 减两小时
two_hours_ago = now - timedelta(hours=2)
print(two_hours_ago)
# 复杂的时间计算
future = now + timedelta(weeks=2, days=3, hours=5)
print(future)常用方法
格式化输出
from datetime import datetime
now = datetime.now()
# 格式化日期时间
print(now.strftime("%Y-%m-%d %H:%M:%S")) # 2023-11-10 14:30:45
print(now.strftime("%A, %B %d, %Y")) # Friday, November 10, 2023
# 解析字符串为datetime对象
date_str = "2023-12-25 14:30:45"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print(parsed_date)时间戳转换
from datetime import datetime
# datetime转时间戳
dt = datetime(2023, 12, 25, 14, 30, 45)
timestamp = dt.timestamp()
print(timestamp)
# 时间戳转datetime
dt_from_ts = datetime.fromtimestamp(timestamp)
print(dt_from_ts)时区处理
from datetime import datetime, timezone, timedelta
# UTC时间
utc_now = datetime.now(timezone.utc)
print(utc_now)
# 创建特定时区
beijing_tz = timezone(timedelta(hours=8))
beijing_time = datetime.now(beijing_tz)
print(beijing_time)实用示例
计算日期差
from datetime import date
date1 = date(2023, 12, 25)
date2 = date(2023, 11, 10)
delta = date1 - date2
print(f"相差天数: {delta.days}")生成日期范围
from datetime import datetime, timedelta
start_date = datetime(2023, 11, 1)
end_date = datetime(2023, 11, 10)
current_date = start_date
while current_date <= end_date:
print(current_date.strftime("%Y-%m-%d"))
current_date += timedelta(days=1)工作日计算
from datetime import datetime, timedelta
def add_business_days(start_date, business_days):
current_date = start_date
added_days = 0
while added_days < business_days:
current_date += timedelta(days=1)
# 跳过周末(周一=0,周日=6)
if current_date.weekday() < 5:
added_days += 1
return current_date
start = datetime(2023, 11, 10) # 周五
result = add_business_days(start, 3) # 加3个工作日
print(result) # 2023-11-15 周三(跳过周末)常用格式化代码
代码 | 含义 | 示例 |
| 4位数年份 | 2023 |
| 2位数月份 | 11 |
| 2位数日期 | 10 |
| 24小时制小时 | 14 |
| 分钟 | 30 |
| 秒 | 45 |
| 完整星期名 | Friday |
| 完整月份名 | November |
| 12小时制小时 | 02 |
datetime 模块功能强大且灵活,是处理日期和时间相关任务的必备工具。
















