Python 日期时间:使用日期和时间
了解如何在 Python 中处理日期、时间、时区和计算。使用日期时间和时间增量掌握格式化、解析和算术。
概述
由于闰年、夏令时调整和不同的时区格式,处理日期和时间是软件开发中众所周知的挑战。 Python 通过其内置的“datetime”模块解决了这些挑战。该模块提供了一组强大的对象类,例如“date”、“time”、“datetime”和“timezone”,它们可以干净地表示和操作时态数据,从而使日期计算变得简单。
最常见的任务之一是将日期转换为字符串(格式化)以及将字符串转换为日期(解析)。 Python 为此使用两个主要方法:“.strftime()”(字符串格式时间)使用格式代码将日期时间对象转换为可读字符串(例如“%Y”代表年份,“%m”代表月份,“%d”代表日期)。相反,“datetime.strptime()”(字符串解析时间)根据匹配的格式模板将原始字符串输入解析为日期时间对象,这在读取日志或 API 输入时至关重要。
使用“timedelta”对象也完全支持执行日期数学。 “timedelta”表示一段时间(例如 7 天、4 小时)。您可以从“datetime”中添加或减去“timedelta”来计算过去或未来的日期(例如确定到期日期)。使用多个时区时,使用时区感知对象(例如“zoneinfo”或“timezone.utc”)对于确保不同服务器位置之间的日期比较保持准确至关重要。
代码和执行输出
将字符串解析为日期时间对象并使用 timedelta 计算未来的截止日期。
from datetime import datetime, timedelta
# Define a specific fixed base date and time (for deterministic runs)
base_date = datetime(2026, 5, 25, 23, 45, 50)
print(f"Base Date/Time: {base_date}")
# Format datetime as string
formatted = base_date.strftime("%Y-%m-%d %H:%M:%S")
print(f"Formatted String: {formatted}")
# Parse string to datetime
date_str = "2026-12-25"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d")
print(f"Parsed Date: {parsed_date}")
# Date arithmetic with timedelta
ten_days_later = base_date + timedelta(days=10)
print(f"Date 10 days later: {ten_days_later.strftime('%Y-%m-%d')}")Base Date/Time: 2026-05-25 23:45:50
Formatted String: 2026-05-25 23:45:50
Parsed Date: 2026-12-25 00:00:00
Date 10 days later: 2026-06-04逐步实施
- 计算试用期和计费日期
- 解析服务器访问日志中的时间戳字符串
- 安排自动 cron 作业或定期报告
常见问题解答
什么是天真的日期时间对象与有意识的日期时间对象?
简单的日期时间对象不包含时区信息,而感知的日期时间对象包含时区偏移量,这使得国际时间计算变得安全。
如何计算两个日期之间的差异?
将一个日期时间对象减去另一个日期时间对象会返回一个 timedelta 对象,表示它们之间的确切持续时间。
相关主题
推荐的 Python 资源
通过相关的交互式教程、备忘单和代码比较来扩展您的知识。