Python中time与datetime模块实现时间戳和字符串互转详解

向北走
向北走
发布时间:2026-10-16 | 3人浏览过
原创

本文详细解析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转时间戳的内容可搜索本站历史文章或继续浏览后续文章,希望对大家有所帮助!

本站声明

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

Python 相关产品和应用

全部下载

专题列表