Python datetime 模块
Python 的 datetime 模块是用于处理日期和时间的标准库模块。它提供了多种类和函数,可以帮助我们轻松地处理日期、时间、时间差等操作。无论是获取当前时间、格式化日期,还是计算时间差,datetime 模块都能胜任。
datetime 模块的核心类
Section titled “datetime 模块的核心类”datetime 模块中包含了以下几个核心类:
-
date类 -date类用于表示日期,包含年、月、日三个属性。 -
time类 -time类用于表示时间,包含时、分、秒、微秒等属性。 -
datetime类 -datetime类是date和time的结合体,可以同时表示日期和时间。 -
timedelta类 -timedelta类用于表示时间差,可以用于日期和时间的加减操作。
使用 datetime 模块
Section titled “使用 datetime 模块”获取当前日期和时间
Section titled “获取当前日期和时间”我们可以使用 datetime 类的 now() 方法来获取当前的日期和时间。
输出示例:
创建特定的日期和时间
Section titled “创建特定的日期和时间”我们可以通过 datetime 类的构造函数来创建特定的日期和时间。
输出示例:
格式化日期和时间
Section titled “格式化日期和时间”datetime 对象可以通过 strftime() 方法格式化为字符串。
输出示例:
timedelta 类可以用于计算两个日期或时间之间的差值。
输出示例:
常见应用场景
Section titled “常见应用场景”计算两个日期之间的天数
Section titled “计算两个日期之间的天数”输出示例:
datetime 模块本身不直接支持时区操作,但可以通过 pytz 库来处理时区。
输出示例:
常用类、方法及属性
Section titled “常用类、方法及属性”1. 核心类
Section titled “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 对象常用方法/属性
Section titled “2. date 对象常用方法/属性”| 方法/属性 | 说明 | 示例 |
|---|---|---|
date.today() |
返回当前本地日期 | date.today() → date(2023, 5, 15) |
date.fromisoformat(str) |
从 YYYY-MM-DD 字符串解析日期 |
date.fromisoformat("2023-05-15") |
date.year |
年份(只读) | d.year → 2023 |
date.month |
月份(1-12,只读) | d.month → 5 |
date.day |
日(1-31,只读) | d.day → 15 |
date.weekday() |
返回星期几(0=周一,6=周日) | d.weekday() → 0 |
date.isoformat() |
返回 YYYY-MM-DD 格式字符串 |
d.isoformat() → "2023-05-15" |
date.strftime(format) |
自定义格式化输出 | d.strftime("%Y/%m/%d") → "2023/05/15" |
3. time 对象常用方法/属性
Section titled “3. time 对象常用方法/属性”| 方法/属性 | 说明 | 示例 |
|---|---|---|
time.hour |
小时(0-23,只读) | t.hour → 14 |
time.minute |
分钟(0-59,只读) | t.minute → 30 |
time.second |
秒(0-59,只读) | t.second → 0 |
time.microsecond |
微秒(0-999999,只读) | t.microsecond → 0 |
time.isoformat() |
返回 HH:MM:SS.mmmmmm 格式字符串 |
t.isoformat() → "14:30:00" |
time.strftime(format) |
自定义格式化输出 | t.strftime("%H:%M") → "14:30" |
4. datetime 对象常用方法/属性
Section titled “4. datetime 对象常用方法/属性”| 方法/属性 | 说明 | 示例 |
|---|---|---|
datetime.now() |
返回当前本地日期时间 | datetime.now() → datetime(2023, 5, 15, 14, 30, 0) |
datetime.utcnow() |
返回当前 UTC 日期时间 | datetime.utcnow() |
datetime.fromtimestamp(ts) |
从时间戳创建 datetime 对象 |
datetime.fromtimestamp(1684146600) |
datetime.timestamp() |
返回时间戳(浮点数秒) | dt.timestamp() → 1684146600.0 |
datetime.date() |
提取日期部分 | dt.date() → date(2023, 5, 15) |
datetime.time() |
提取时间部分 | dt.time() → time(14, 30) |
datetime.year |
年份(同 date) |
dt.year → 2023 |
datetime.strftime(format) |
自定义格式化输出 | dt.strftime("%Y-%m-%d %H:%M") → "2023-05-15 14:30" |
5. timedelta 对象常用属性
Section titled “5. timedelta 对象常用属性”| 属性 | 说明 | 示例 |
|---|---|---|
days |
天数(可正可负) | delta.days → 5 |
seconds |
秒数(0-86399) | delta.seconds → 3600(1小时) |
microseconds |
微秒数(0-999999) | delta.microseconds → 0 |
6. 常用格式化符号(strftime)
Section titled “6. 常用格式化符号(strftime)”| 符号 | 说明 | 示例输出 |
|---|---|---|
%Y |
四位年份 | 2023 |
%m |
两位月份(01-12) | 05 |
%d |
两位日(01-31) | 15 |
%H |
24小时制小时(00-23) | 14 |
%M |
分钟(00-59) | 30 |
%S |
秒(00-59) | 00 |
%A |
完整星期名 | Monday |
%a |
缩写星期名 | Mon |
%B |
完整月份名 | May |
%b |
缩写月份名 | May |
1. 计算日期差
2. 时间加减
3. 时区转换(需安装 pytz)
Section titled “3. 时区转换(需安装 pytz)”4. 解析字符串
-
不可变性:所有
datetime对象不可变,操作会返回新对象。 -
时区处理:原生
datetime无时区支持,需用pytz或 Python 3.9+ 的zoneinfo。 -
性能:频繁创建对象可能影响性能,考虑重用或缓存。
-
边界检查:非法日期(如
date(2023, 2, 30))会触发ValueError。