模块课程(2/4)
日期时间:日期和时间
datetime 模块提供了表示日期和时间的类。
三个主要类
date— 仅日期(年、月、日)time— 仅时间(小时、分钟、秒、微秒)datetime— 日期 + 时间timedelta— 持续时间(两个瞬间之间的差异)
from datetime import date, time, datetime, timedelta
date(2025, 1, 1) # datetime.date(2025, 1, 1)
time(14, 30, 0) # datetime.time(14, 30)
datetime(2025, 1, 1, 14, 30, 0) # datetime.datetime(2025, 1, 1, 14, 30)“现在”:now 和 today
datetime.now() # current date + time
date.today() # current date only使用 timedelta 进行算术
from datetime import datetime, timedelta
ora = datetime(2025, 1, 1, 12, 0)
domani = ora + timedelta(days=1)
una_ora_fa = ora - timedelta(hours=1)
# difference between two datetimes -> timedelta
delta = domani - ora
delta.days # 1
delta.total_seconds() # 86400.0timedelta 接受 days、seconds、microseconds、milliseconds、
minutes、hours、weeks(不是 months 或 years,它们是不明确的)。
格式:strftime
根据模式转换日期时间 → 字符串。
ora = datetime(2025, 1, 1, 14, 30)
ora.strftime("%Y-%m-%d") # '2025-01-01'
ora.strftime("%d/%m/%Y %H:%M") # '01/01/2025 14:30'
ora.strftime("%A %d %B %Y") # 'Wednesday 01 January 2025' (locale-dependent)最常用的指令: %Y 4 位数年份、 %m 2 位数月份、 %d 2 位数日期、
%H 24 小时,%M 分钟,%S 秒。
解析:strptime
相反:字符串 → 日期时间,给定预期模式。
datetime.strptime("01/01/2025", "%d/%m/%Y")
# datetime.datetime(2025, 1, 1, 0, 0)ISO 8601
对于数据交换,始终首选 ISO 8601 格式 (YYYY-MM-DDTHH:MM:SS):
ora.isoformat() # '2025-01-01T14:30:00'
datetime.fromisoformat("2025-01-01T14:30:00")时区和感知日期时间
默认情况下,Python 中的 datetime 对象是naive(意味着它们不包含时区信息)。对于现实世界的应用程序,最佳实践是通过 datetime.timezone.utc 或利用 zoneinfo 模块设置时区信息,让它们感知。
尝试一下
计算 2025 年 1 月 1 日后 30 天的日期,并将其格式设置为变量“date_str”中的“YYYY-MM-DD”。评估“date_str”。
显示提示
基数 + timedelta(days=30),然后 .strftime
3 次尝试后可用的解决方案
复习练习
给定字符串 s = '15/03/2025'`,使用 strptime 将其解析为变量 d (日期时间对象)。计算一周中的整数天“d.weekday()”(0=周一,6=周日)。
显示提示
strptime 与意大利格式模式。
3 次尝试后可用的解决方案
额外的挑战
Import `date` from the `datetime` module. Calculate the difference in days between December 25, 2026 (`date(2026, 12, 25)`) and December 20, 2026 (`date(2026, 12, 20)`). Store the integer number of days (using the `.days` attribute of the delta) in `days_diff`. Finally, evaluate the variable.
显示提示
The difference between two dates returns a timedelta. Access the integer days with delta.days.
3 次尝试后可用的解决方案