Python标准库datetime模块日期和时间数据类型解读

温以宁
温以宁
发布时间:2026-10-10 | 2人浏览过
原创

本文详细解析Python标准库datetime模块的核心对象date、time与datetime的使用方法。通过具体代码示例,演示如何创建日期时间对象、提取各项属性,并掌握利用strftime与strptime进行自定义格式转换的技巧,同时提供基于time模块的时间戳读写操作及注意事项,帮助开发者高效完成日常日期计算与时间格式化需求。

Datetime核心对象与基础调用

第1步:导入模块并初始化日期(date)对象

使用公历存储日历日期的核心工具是date类。它仅包含年、月、日信息,适用于只需处理日期而无时分秒需求的场景。

# 引入datetime模块
import datetime

# 实例化指定日期对象
my_date = datetime.date(2021, 3, 5)
print(my_date)  # 输出: 2021-03-05

# 单独提取年月日属性
print(f"年份: {my_date.year}, 月份: {my_date.month}, 日期: {my_date.day}")

第2步:创建时间(time)与完整日期时间(datetime)对象

time类专注记录时、分、秒,而datetime类则是两者的结合体,能够同时处理日期与时间维度。

# 创建独立的时间对象
my_time = datetime.time(13, 14, 20)
print(my_time)  # 输出: 13:14:20
print(f"时: {my_time.hour}, 分: {my_time.minute}, 秒: {my_time.second}")

# 创建完整的日期时间对象
full_dt = datetime.datetime(2019, 9, 9, 13, 14, 20)
print(full_dt)  # 输出: 2019-09-09 13:14:20

# datetime对象同样支持直接访问年、月、日、时、分、秒属性
print(f"完整属性读取: {full_dt.year}-{full_dt.month}-{full_dt.day} {full_dt.hour}:{full_dt.minute}:{full_dt.second}")

获取当前系统时间的标准方法为datetime.now()。注:原文提及的datetime.new()并非Python内置方法,实际应用中请统一使用.now()。

# 获取当前精确到微秒的日期时间
current_dt = datetime.datetime.now()
print(current_dt)

日期时间格式与字符串相互转换

第3步:使用内置str()快速转字符串

直接调用str()可将时间对象转换为Python默认的ISO风格字符串格式,适合日志记录或基础调试。

dt_obj = datetime.datetime(2021, 3, 5, 13, 14, 20)
str_repr = str(dt_obj)
print(type(str_repr), str_repr)
# 输出: <class 'str'> 2021-03-05 13:14:20

第4步:利用strftime()自定义输出格式

strftime()(string format time)支持完全自由的格式定义。通过插入特定的占位符参数,即可生成符合业务规范的展示文本。

Python strftime与strptime常用日期时间格式化参数对照表
strftime和strptime支持的大量占位符(如%Y、%m、%d、%H、%M等)可自由组合实现精准格式控制
custom_str = dt_obj.strftime('%m/%d/%Y %H:%M')
print(custom_str)  # 输出: 03/05/2021 13:14

第5步:利用strptime()反向解析字符串

strptime()(string parse time)的作用与上面相反,用于将特定格式的字符串还原为datetime对象。关键在于格式串必须与目标字符串严格对应。

# 将'Aug-23-21 20:13'按对应占位符解析回datetime对象
parsed_dt = datetime.datetime.strptime('Aug-23-21 20:13', '%b-%d-%y %H:%M')
print(parsed_dt)  # 输出: 2021-08-23 20:13:00

时间戳读写与跨时区注意事项

第6步:日期时间转换为Unix时间戳(秒级浮点数)

时间戳便于进行运算、数据库存储或跨平台交换。可通过time模块配合timetuple()获取。

import time
now_ts = time.mktime(datetime.datetime.now().timetuple())
print(now_ts)  # 输出类似: 1640851597.0

第7步:时间戳转回可读字符串或datetime对象

逆向操作需先解包为本地元组再格式化,或使用UTC解析函数。需注意部分底层函数默认返回协调世界时(UTC),实际输出可能与服务器所在地时区存在固定差值。

# 时间戳 -> 格式化字符串
num = 1640851597.0
str_from_ts = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(num))
print(str_from_ts)  # 输出: 2021-12-30 16:06:37

# 时间戳 -> UTC datetime对象(注意时区差异)
utc_dt = datetime.datetime.utcfromtimestamp(num)
print(utc_dt)  # 输出: 2021-12-30 08:06:37

总结

以上就是Python标准库datetime模块日期和时间数据类型解读的详细内容,更多关于Python日期处理与时间格式转换的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表