Python组蓝桥杯备赛超详细知识点总结笔记_语言基础篇2—日期与时间
文章目录
五、日期与时间
1. 核心模块
| 模块 | 功能特点 | 适用场景 |
|---|---|---|
time | 基础时间操作(时间戳、休眠、字符串转换) | 简单计时、格式处理 |
datetime | 高级日期时间运算(日期 / 时间 / 间隔类型、时间差计算) | 复杂时间计算(日期加减、跨天时间差等) |
2. time 模块
(1)核心功能
| 功能 | 函数 / 方法 | 说明 |
|---|---|---|
| 时间戳 | time.time() | 返回从 1970-01-01 00:00:00 UTC 到现在的秒数(浮点数),一般用于计时 |
| 程序休眠 | time.sleep(x) | 暂停程序 x 秒(x 可为小数) |
| 本地时间对象 | time.localtime() | 返回struct_time对象(含年 / 月 / 日等属性) |
(2)时间与字符串转换
| 转换方向 | 函数 | 示例 |
|---|---|---|
| 时间→字符串 | time.strftime(format, t) | time.strftime("%Y-%m-%d", t) |
| 字符串→时间 | time.strptime(string, format) | time.strptime("2024-05-20", "%Y-%m-%d") |
(3)访问具体时间属性t=time.localtime()
| 时间属性 | 代码示例 | 取值范围 / 说明 |
|---|---|---|
| 年份 | t.tm_year | 4 位数年份(如 2024) |
| 月份 | t.tm_mon | 1-12(如 5 表示 5 月) |
| 日期 | t.tm_mday | 1-31(如 20 表示 20 日) |
| 小时(24 小时制) | t.tm_hour | 0-23 |
| 分钟 | t.tm_min | 0-59 |
| 秒(含闰秒) | t.tm_sec | 0-61 |
| 周几 | t.tm_wday | 0-6(0 表示周一,6 表示周日) |
| 年第几天 | t.tm_yday | 1-366(闰年 366 天) |
| 夏令时标识 | t.tm_isdst | 0(非夏令时)、1(夏令时)、-1(未知) |
(4)常用格式指令
| 格式指令 | 含义 | 示例 |
|---|---|---|
%Y | 4 位数年份 | 2024 |
%m | 2 位数月份(01-12) | 05(5 月) |
%d | 2 位数日期(01-31) | 20 |
%H | 24 小时制小时(00-23) | 14(下午 2 点) |
%M | 2 位数分钟(00-59) | 30 |
%S | 2 位数秒(00-61) | 45 |
%a | 本地化星期缩写 | 周一(中文)、Mon(英文) |
%A | 本地化星期全称 | 星期一(中文)、Monday(英文) |
%b | 本地化月份缩写 | 5 月(中文)、May(英文) |
%B | 本地化月份全称 | 五月(中文)、May(英文) |
3. datetime 模块
(1)核心数据类型
| 类型 | 包含信息 | 示例 |
|---|---|---|
date | 年、月、日 | datetime.date(2024,5,20) |
time | 时、分、秒 | datetime.time(14,30,45) |
datetime | 年、月、日、时、分、秒 | datetime.datetime(2024,5,20,14,30,45) |
timedelta | 时间间隔(天、秒、微秒) | datetime.timedelta(days=7) |
(2)data类
a. 创建 date 对象
- 语法:
datetime.date(year, month, day) - 输出结果:
YYYY-MM-DD(默认格式)
b. 属性访问
| 属性名 | 功能描述 | 示例代码 | 输出结果 |
|---|---|---|---|
year | 获取 4 位数年份 | print(a.year) | 2023 |
month | 获取 1-12 的月份 | print(a.month) | 10 |
day | 获取 1-31 的日期 | print(a.day) | 1 |
c. 方法
| 方法名 | 功能描述 | 示例代码 | 输出结果 |
|---|---|---|---|
weekday() | 返回星期(0 = 周一,6 = 周日) | print(a.weekday()) | 6(2023-10-01 是周日) |
d. 运算规则
| 运算符 / 操作 | 规则说明 | 示例代码 | 示例输出 |
|---|---|---|---|
date1 - date2 | 两 date 相减,得timedelta(天数差) | b = datetime.date(2023,10,7) print(b - a) | 6 days, 0:00:00 |
date ± timedelta | date 与时间间隔加减,得新 date(推算日期) | delta = datetime.timedelta(days=100) print(a + delta) / print(a - delta) | 2024-01-09 / 2023-06-23 |
> / < / == / >= / <= | 按日期先后比较,早的日期为 “小” | print(a < b) / print(a == b) | True / False |
(3)time类
a. 创建 time 对象
- 语法:
datetime.time(hour, minute, second) - 输出结果:
HH:MM:SS(默认格式)
b. 属性访问
| 属性名 | 功能描述 | 示例代码 | 输出结果 |
|---|---|---|---|
hour | 获取 0-23 的小时数 | print(a.hour) | 10 |
minute | 获取 0-59 的分钟数 | print(a.minute) | 25 |
second | 获取 0-59 的秒数 | print(a.second) | 30 |
c. 操作规则
| 操作类型 | 规则说明 | 示例代码 | 示例输出 |
|---|---|---|---|
> / < / == / >= / <= | 按时间先后比较(早的时间为 “小”) | print(datetime.time(10,25) < datetime.time(11,0)) / print(a == datetime.time(10,25,30)) | True / Flase |
| 不支持直接加减运算 | 需先将 time 对象转为 datetime 类型(结合日期)后再计算 | 直接写datetime.time(10,25) + datetime.time(11,0)会报错 |
(4)datetime类
a. 创建 datetime 对象
① 直接创建
- 语法:
datetime.datetime(year, month, day, hour, minute, second) - 输出结果:
YYYY-MM-DD HH:MM:SS(默认格式)
② 组合创建
-
语法:
datetime.datetime.combine(date_obj, time_obj) -
输出结果:
YYYY-MM-DD HH:MM:SS(默认格式) -
示例代码:
import datetime a_date = datetime.date(2023,10,1) #data对象 a_time = datetime.time(17,25,35) #time对象 b = datetime.datetime.combine(a_date, a_time)
b. 属性访问
| 属性名 | 功能描述 | 示例代码 | 输出结果 |
|---|---|---|---|
year | 获取 4 位数年份 | print(a.year) | 2023 |
month | 获取 1 - 12 的月份 | print(a.month) | 10 |
day | 获取 1 - 31 的日期 | print(a.day) | 1 |
hour | 获取 0 - 23 的小时数 | print(a.hour) | 10 |
minute | 获取 0 - 59 的分钟数 | print(a.minute) | 25 |
second | 获取 0 - 59 的秒数 | print(a.second) | 30 |
c. 方法
| 方法名 | 功能描述 | 示例代码 | 输出结果 |
|---|---|---|---|
date() | 返回对应date对象 | print(a.date()) | 2023-10-01 |
time() | 返回对应time对象 | print(a.time()) | 10:25:30 |
weekday() | 返回星期(0 = 周一,6 = 周日) | print(a.weekday()) | 6(2023-10-01 是周日) |
d. 运算规则
| 运算符 / 操作 | 规则说明 | 示例代码 | 示例输出 |
|---|---|---|---|
datetime1 - datetime2 | 两datetime相减,得timedelta(含天 / 时 / 分 / 秒等差值) | b = datetime.datetime(2023,10,1,17,25,35)``print(b - a) | 7:00:05 |
datetime ± timedelta | datetime与时间间隔加减,得新datetime对象(推算日期时间) | print(a + datetime.timedelta(hours=5)) | 2023-10-01 15:25:30 |
> / < / == / >= / <= | 按日期时间先后比较,早的为 “小” | print(a < b) / print(a == b) | True / False |
(5) timedelta 类
a. 创建 timedelta 对象
-
语法:
datetime.timedelta(参数) -
参数:
weeks/days/hours/minutes/seconds/milliseconds/microseconds(会自动转换为天、秒、微秒来存储) -
输出结果:
X days, HH:MM:SS -
示例代码:
import datetime delta1 = datetime.timedelta(days=100) #输出结果:100 days, 0:00:00 delta2 = datetime.timedelta(weeks=1, days=2, hours=3) #输出结果:9 days, 3:00:00
b. 属性访问
| 属性名 | 功能描述 | 示例代码 | 输出结果 |
|---|---|---|---|
days | 获取间隔的天数(整数) | delta = datetime.timedelta(days=2, hours=3, minutes=30)``print(delta.days) | 2 |
seconds | 获取间隔的秒数(范围 0 - 86399,不含天数部分) | print(delta.seconds) | 12600 |
microseconds | 获取间隔的微秒数(范围 0 - 999999) | print(delta.microseconds) | 0 |
c. 方法
| 方法名 | 功能描述 | 示例代码 | 输出结果 |
|---|---|---|---|
total_seconds() | 返回时间间隔的总秒数(包含天数、微秒) | print(delta.total_seconds()) | 183600.0 |
(6)常用方法
| 功能 | 方法 / 语法 | 说明 |
|---|---|---|
| 获取当前日期 | datetime.date.today() | 返回date对象 |
| 获取当前日期时间 | datetime.datetime.now() | 返回datetime对象 |
| 日期时间转字符串 | obj.strftime(format) | 同time模块格式指令 |
| 字符串转日期时间 | datetime.datetime.strptime(s, format) | 严格匹配格式 |
| 日期时间运算 | date/datetime ± timedelta | 结果为新的date/datetime对象 |
| 计算时间差 | date1 - date2 / dt1 - dt2 | 结果为timedelta对象 |

被折叠的 条评论
为什么被折叠?



