Python中time与datetime模块实现时间戳和字符串互转详解
本文详细解析Python中time和datetime两个内置模块在时间处理上的应用。重点介绍如何将当前时间转换为时间戳或结构化时间,以及如何在时间戳、时间字符串和datetime对象之间进行相互转换。通过具体代码示例,展示strftime、strptime、mktime、timestamp等关键函数的用法,帮助开发者掌握时间格式化处理技巧。
Python datetime 和时间戳互转
import datetime, time
now = datetime.datetime.now()
now_time = int(time.mktime(now.timetuple())) #datetime 转时间戳
now = datetime.datetime.fromtimestamp(now_time) #时间戳转datetime
# datetime 当天8点
datetime(now.year, now.month, now.day, 8)
now = 0点-8点 int(now-now % 86400) + time.timezone是前一天的零点Python time和datetime时间戳和时间字符串相互转换
时间戳是指从格林威治标准时间1970年01月01日00时00分00秒开始计算所经过的秒数,通常表现为一个浮点数。
time和datetime均为Python内置模块,无需额外安装即可直接使用。两者均可用于获取当前时间以及对时间格式进行转换,例如在时间戳与时间字符串之间进行互换。
接下来我们将利用这两个模块演示具体的时间格式转换操作。
一、使用time模块获取当前时间
import time
print(time.time())
print(time.localtime())
print(time.localtime(time.time()))
运行结果:
1559120608.5015295 time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=17, tm_min=3, tm_sec=28, tm_wday=2, tm_yday=149, tm_isdst=0) time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=17, tm_min=3, tm_sec=28, tm_wday=2, tm_yday=149, tm_isdst=0)
调用time.time()函数可获取当前时间,默认返回值为表示时间戳的浮点数。
使用time.localtime()或time.localtime(time.time())均可获取当前时间的struct_time对象。该对象包含年、月、日、时、分、秒、一周中的第几天(周一为0,范围0-6)、一年中的第几天(从1开始,范围1-366)以及夏时令标志(是夏时令为1,非夏时令为0,未知情况为-1)。
二、time模块将时间戳转换为时间字符串
# 时间戳转换成时间字符串
time_str = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
print(time_str)运行结果:
2019-05-29 17:08:35
三、time模块将时间字符串转换为时间戳
print(time.strptime(time_str, '%Y-%m-%d %H:%M:%S'))
# 时间字符串转换成时间戳
time_stamp = time.mktime(time.strptime(time_str, '%Y-%m-%d %H:%M:%S'))
print(time_stamp)
运行结果:
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=17, tm_min=8, tm_sec=35, tm_wday=2, tm_yday=149, tm_isdst=-1) 1559120915.0
可以看出,无论是将时间戳转换为时间字符串,还是将时间字符串转换为时间戳,time模块均需通过struct_time作为中间过渡。即先转换为struct_time,再基于struct_time生成目标结果。
四、使用datetime模块获取当前时间
from datetime import datetime
print(datetime.now())
print(datetime.now().timetuple())运行结果:
2019-05-29 17:22:37.343784 time.struct_time(tm_year=2019, tm_mon=5, tm_mday=29, tm_hour=17, tm_min=22, tm_sec=37, tm_wday=2, tm_yday=149, tm_isdst=-1)
调用datetime.now()可获取当前时间,默认返回一个datetime对象,其显示格式类似时间字符串。
注意:导入时应从datetime包中导入datetime模块。不同的导入方式会导致后续使用时的语法差异。
通过调用datetime对象的timetuple()方法,可以获取该时间对应的struct_time对象。
五、datetime模块将datetime对象转换为时间字符串和时间戳
# datetime对象转换成时间字符串
datetime_str = datetime.strftime(datetime.now(), '%Y-%m-%d %H:%M:%S')
print(datetime_str)
# datetime对象转换成时间戳
datetime_stamp = datetime.timestamp(datetime.now())
print(datetime_stamp)运行结果:
2019-05-29 17:22:37 1559121757.343784
六、datetime模块将时间字符串转换为时间戳
# 时间字符串转datetime对象,再转时间戳
datetime_stamp2 = datetime.timestamp(datetime.strptime(datetime_str, '%Y-%m-%d %H:%M:%S'))
print(datetime_stamp2)运行结果:
1559121757.0
七、datetime模块将时间戳转换为时间字符串
# 时间戳转datetime对象,再转时间字符串
datetime_str2 = datetime.strftime(datetime.fromtimestamp(datetime_stamp2), '%Y-%m-%d %H:%M:%S')
print(datetime_str2)运行结果:
2019-05-29 17:22:37
在使用datetime进行时间戳与时间字符串互转时,流程均为先转换为datetime对象,然后再进行进一步转换。
在实际开发中,time和datetime两个模块可以混合使用,二者兼容且可协同工作。
到此关于Python datetime和时间戳互转的介绍结束,更多相关Python datetime转时间戳的内容可搜索本站历史文章或继续浏览后续文章,希望对大家有所帮助!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













