Python 日期时间
Python 的 datetime 模块提供了处理日期和时间的类和函数。这个模块是 Python 标准库的一部分,不需要额外安装。
主要类
datetime.datetime
用于处理日期和时间的组合。
from datetime import datetime
# 获取当前日期和时间
now = datetime.now()
print(now) # 输出类似:2024-03-21 14:30:45.123456
# 创建特定的日期时间
dt = datetime(2024, 3, 21, 14, 30, 45)
print(dt) # 输出:2024-03-21 14:30:45
datetime.date
仅用于处理日期。
from datetime import date
# 获取当前日期
today = date.today()
print(today) # 输出类似:2024-03-21
# 创建特定的日期
d = date(2024, 3, 21)
print(d) # 输出:2024-03-21
datetime.time
仅用于处理时间。
from datetime import time
# 创建特定的时间
t = time(14, 30, 45)
print(t) # 输出:14:30:45
常用操作
日期时间格式化
from datetime import datetime
now = datetime.now()
# 格式化日期时间
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted) # 输出类似:2024-03-21 14:30:45
# 解析字符串为日期时间
dt_str = "2024-03-21 14:30:45"
dt = datetime.strptime(dt_str, "%Y-%m-%d %H:%M:%S")
print(dt) # 输出:2024-03-21 14:30:45
日期时间计算
from datetime import datetime, timedelta
now = datetime.now()
# 增加天数
future = now + timedelta(days=7)
print(future) # 7天后的日期时间
# 减少天数
past = now - timedelta(days=7)
print(past) # 7天前的日期时间
# 增加小时
future_hour = now + timedelta(hours=2)
print(future_hour) # 2小时后的日期时间
时区处理
from datetime import datetime
import pytz
# 获取特定时区的当前时间
tz = pytz.timezone('Asia/Shanghai')
shanghai_time = datetime.now(tz)
print(shanghai_time) # 上海时区的当前时间
# 转换时区
utc_time = datetime.now(pytz.UTC)
shanghai_time = utc_time.astimezone(pytz.timezone('Asia/Shanghai'))
print(shanghai_time) # 将 UTC 时间转换为上海时间
常用格式化代码
%Y: 四位数的年份%m: 两位数的月份%d: 两位数的日期%H: 24 小时制的小时%I: 12 小时制的小时%M: 分钟%S: 秒%f: 微秒%z: UTC 时区偏移%Z: 时区名称%j: 一年中的第几天%U: 一年中的第几周(周日为一周的开始)%W: 一年中的第几周(周一为一周的开始)
注意事项
- 处理时区时,建议使用
pytz库而不是datetime模块的timezone类 - 在进行日期时间计算时,注意考虑闰年、夏令时等特殊情况
- 在处理用户输入的日期时间字符串时,建议使用
try-except进行异常处理 - 存储日期时间时,建议使用 UTC 时间,显示时再转换为本地时间
