Python中如何将13位毫秒级Unix时间戳转换为标准时间格式
解决13位毫秒级Unix时间戳转格式化时间的问题
嘿,我来帮你搞定这个时间戳转换的坑!你之前的问题出在对13位时间戳的理解上——这是毫秒级的Unix时间戳,而time.localtime()需要的是秒级的数值,你直接截断前9位的操作完全搞错了逻辑,才会得到1974年的错误结果。
正确的转换方法(两种可选)
方法一:使用time模块
核心是把13位毫秒时间戳除以1000,转换成秒级时间戳后再处理:
import time # 你的13位毫秒时间戳 ms_ts = "1523126888080" # 转换为秒级时间戳(转成整数后除以1000,或者直接转浮点数都可以) sec_ts = int(ms_ts) / 1000 # 格式化目标时间格式 formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(sec_ts)) print(formatted_time) # 输出:2018-04-08 12:18:08
方法二:使用datetime模块(更直观)
datetime模块的fromtimestamp方法也支持处理浮点数的时间戳,代码更简洁:
from datetime import datetime ms_ts = "1523126888080" formatted_time = datetime.fromtimestamp(int(ms_ts)/1000).strftime("%Y-%m-%d %H:%M:%S") print(formatted_time) # 同样输出:2018-04-08 12:18:08
为什么之前的代码出错?
你之前取了"1523126888080"的前9位得到152312688,这个数值对应的是1974年的秒级时间戳,和正确的秒级时间戳1523126888差了一个数量级,自然会得到完全错误的结果啦。
内容的提问来源于stack exchange,提问作者The_Anil
相关产品推荐
相关产品推荐

