Python datetime日期时间处理完全指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

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

博客

书籍推荐