====== 第二十四章:datetime模块 ======
===== 本章目标 =====
完成本章学习后,你将能够:
* 处理日期和时间
* 进行时区转换
* 格式化日期时间
* 计算时间差
===== 日期时间基础 =====
from datetime import datetime, date, time, timedelta
# 当前日期时间
now = datetime.now()
print(now) # 2024-01-15 10:30:45.123456
# 当前日期
today = date.today()
print(today) # 2024-01-15
# 创建特定日期时间
dt = datetime(2024, 1, 15, 10, 30, 0)
d = date(2024, 1, 15)
t = time(10, 30, 0)
===== 格式化与解析 =====
from datetime import datetime
# 格式化
dt = datetime.now()
print(dt.strftime("%Y-%m-%d %H:%M:%S")) # 2024-01-15 10:30:45
print(dt.strftime("%A, %B %d, %Y")) # Monday, January 15, 2024
# 解析
dt = datetime.strptime("2024-01-15", "%Y-%m-%d")
# ISO格式
dt = datetime.fromisoformat("2024-01-15T10:30:00")
print(dt.isoformat())
===== 时间计算 =====
from datetime import datetime, timedelta
now = datetime.now()
# 加减时间
future = now + timedelta(days=7, hours=3)
past = now - timedelta(weeks=1)
# 时间差
diff = future - now
print(diff.days) # 7
print(diff.seconds) # 10800 (3小时)
print(diff.total_seconds())
# 比较
print(future > now) # True
===== 时区处理 =====
from datetime import datetime, timezone, timedelta
import pytz # 第三方库
# UTC时间
utc = datetime.now(timezone.utc)
# 创建时区
china_tz = timezone(timedelta(hours=8))
beijing = datetime.now(china_tz)
# 使用pytz
ny_tz = pytz.timezone('America/New_York')
ny_time = datetime.now(ny_tz)
# 时区转换
utc_time = datetime.now(pytz.UTC)
beijing_time = utc_time.astimezone(pytz.timezone('Asia/Shanghai'))
===== 本章练习 =====
1. 实现日期计算器
2. 实现倒计时功能
3. 处理时区转换
4. 解析各种日期格式
下一章:[[python_course:chapter25|第二十五章:collections与itertools]]