Python 的 datetime 模块是用于处理日期和时间的标准库模块。它提供了多种类和函数,可以帮助我们轻松地处理日期、时间、时间差等操作。无论是获取当前时间、格式化日期,还是计算时间差,datetime 模块都能胜任。
datetime
datetime 模块的核心类
datetime 模块中包含了以下几个核心类:
date 类 - date 类用于表示日期,包含年、月、日三个属性。
date
time 类 - time 类用于表示时间,包含时、分、秒、微秒等属性。
time
datetime 类 -datetime 类是 date 和 time 的结合体,可以同时表示日期和时间。
timedelta 类 - timedelta 类用于表示时间差,可以用于日期和时间的加减操作。
timedelta
使用 datetime 模块
获取当前日期和时间
我们可以使用 datetime 类的 now() 方法来获取当前的日期和时间。
now()
输出示例:
当前时间: 2025-04-22 14:30:45
创建特定的日期和时间
我们可以通过 datetime 类的构造函数来创建特定的日期和时间。
当前时间: 2025-04-22 15:30:00
格式化日期和时间
datetime 对象可以通过 strftime() 方法格式化为字符串。
strftime()
格式化时间: 2025-04-22 14:30:45
计算时间差
timedelta 类可以用于计算两个日期或时间之间的差值。
10 天后的时间: 2025-05-02 14:30:45.123456
常见应用场景
计算两个日期之间的天数
两个日期之间的天数差: 9
处理时区
datetime 模块本身不直接支持时区操作,但可以通过 pytz 库来处理时区。
pytz
上海当前时间: 2025-04-22 14:30:45.123456+08:00
常用类、方法及属性
1. 核心类
datetime.date
date(2023, 5, 15)
datetime.time
time(14, 30, 0)
datetime.datetime
datetime(2023, 5, 15, 14, 30)
datetime.timedelta
timedelta(days=5)
datetime.tzinfo
2. date 对象常用方法/属性
date.today()
date.fromisoformat(str)
YYYY-MM-DD
date.fromisoformat("2023-05-15")
date.year
d.year
2023
date.month
d.month
5
date.day
d.day
15
date.weekday()
d.weekday()
0
date.isoformat()
d.isoformat()
"2023-05-15"
date.strftime(format)
d.strftime("%Y/%m/%d")
"2023/05/15"
3. time 对象常用方法/属性
time.hour
t.hour
14
time.minute
t.minute
30
time.second
t.second
time.microsecond
t.microsecond
time.isoformat()
HH:MM:SS.mmmmmm
t.isoformat()
"14:30:00"
time.strftime(format)
t.strftime("%H:%M")
"14:30"
4. datetime 对象常用方法/属性
datetime.now()
datetime(2023, 5, 15, 14, 30, 0)
datetime.utcnow()
datetime.fromtimestamp(ts)
datetime.fromtimestamp(1684146600)
datetime.timestamp()
dt.timestamp()
1684146600.0
datetime.date()
dt.date()
datetime.time()
dt.time()
time(14, 30)
datetime.year
dt.year
datetime.strftime(format)
dt.strftime("%Y-%m-%d %H:%M")
"2023-05-15 14:30"
5. timedelta 对象常用属性
days
delta.days
seconds
delta.seconds
3600
microseconds
delta.microseconds
6. 常用格式化符号(strftime)
strftime
%Y
%m
05
%d
%H
%M
%S
00
%A
Monday
%a
Mon
%B
May
%b
实例
1. 计算日期差
2. 时间加减
3. 时区转换(需安装 pytz)
4. 解析字符串
注意事项
不可变性:所有 datetime 对象不可变,操作会返回新对象。
时区处理:原生 datetime 无时区支持,需用 pytz 或 Python 3.9+ 的 zoneinfo。
zoneinfo
性能:频繁创建对象可能影响性能,考虑重用或缓存。
边界检查:非法日期(如 date(2023, 2, 30))会触发 ValueError。
date(2023, 2, 30)
ValueError