Python 开发实践中,经常需要将时间戳与指定的日期时间进行相互转换,Python 中处理时间的模块主要为 time 和 datetime 模块。
日期时间转换时间戳
将指定的时间格式(如 2019-06-05 20:48:37)转换成时间戳,具体的操作过程为:
- 首先利用 time 模块的
strptime()
函数将指定时间格式转换成时间元组(返回 struct_time 对象)。 - 再利用 time 模块的
mktime()
函数将时间元组转换成时间戳(返回 float 类型,精确到秒)。
代码示例如下:
import time
dt = "2019-06-05 20:48:37"
# dt = "2019/06/05 20:48:37"
# 转换成时间元组
time_tuple = time.strptime(dt, "%Y-%m-%d %H:%M:%S")
# time_tuple = time.strptime(dt, "%Y/%m/%d %H:%M:%S")
print(type(time_tuple))
print(time_tuple)
# 转换成时间戳
timestamp = time.mktime(time_tuple)
print(type(timestamp))
print(timestamp)
print(int(timestamp))
<class 'time.struct_time'> time.struct_time(tm_year=2019, tm_mon=6, tm_mday=5, tm_hour=20, tm_min=48, tm_sec=37, tm_wday=2, tm_yday=156, tm_isdst=-1) <class 'float'> 1559738917.0 1559738917
时间戳转换指定格式的日期时间
在时间戳转换成指定格式的日期时间中,首先需要将时间戳转换成 struct_time 时间元组对象,再转换成时间的具体格式:
- 利用 time 模块的
localtime()
函数将时间戳转换成时间元组(返回 struct_time 对象)。 - 利用 time 模块的
strftime()
函数将时间元组转换成指定格式的日期时间。
代码示例如下:
import time
timestamp = 1559738917
# 转换成时间元组
time_tuple = time.localtime(timestamp)
print(type(time_tuple))
print(time_tuple)
# 转换成指定的时间格式
dt = time.strftime("%Y-%m-%d %H:%M:%S", time_tuple)
print(type(dt))
print(dt)
<class 'time.struct_time'> time.struct_time(tm_year=2019, tm_mon=6, tm_mday=5, tm_hour=20, tm_min=48, tm_sec=37, tm_wday=2, tm_yday=156, tm_isdst=0) <class 'str'> 2019-06-05 20:48:37