Python标准库datetime模块日期和时间数据类型解读
本文详细解析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)支持完全自由的格式定义。通过插入特定的占位符参数,即可生成符合业务规范的展示文本。

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日期处理与时间格式转换的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













