Python转换'2018-03-15T05:13:24.000-0400'为epoch时间报错求助
解决Python中带时区的日期时间转Epoch时间的问题
嘿,我来帮你搞定这个问题!你遇到的错误根源在于日期格式字符串和输入的时间格式完全不匹配,咱们一步步来解决:
问题分析
你输入的日期格式是 2018-03-15T05:13:24.000-0400,里面包含了这些关键部分:
T:日期和时间的分隔符.000:毫秒部分-0400:时区偏移(西四区)
但你原来的代码用的格式字符串是 %Y-%m-%d %H:%M:%S,既没有匹配T分隔符,也没处理毫秒和时区,所以肯定会抛出格式错误。
解决方案:用datetime模块处理带时区的时间
Python的datetime模块支持解析带时区的时间格式,咱们直接用它来实现转换:
from datetime import datetime start = '2018-03-15T05:13:24.000-0400' # 用对应格式解析带时区的日期时间 dt_obj = datetime.strptime(start, '%Y-%m-%dT%H:%M:%S.%f%z') # 转换为Epoch时间(秒),再乘以1000得到毫秒级结果 epoch_milliseconds = int(dt_obj.timestamp() * 1000) print(epoch_milliseconds)
运行这段代码后,就会输出你期望的 1521105204000。
关键说明
%Y-%m-%dT%H:%M:%S.%f%z这个格式字符串完全匹配你的输入:%Y-%m-%d:日期部分T:直接匹配输入中的分隔符%H:%M:%S:时间部分.%f:毫秒部分(.000)%z:时区偏移(-0400)
dt_obj.timestamp()会返回UTC时间对应的Epoch秒数,乘以1000后就得到了你需要的毫秒级Epoch时间。
内容的提问来源于stack exchange,提问作者ANKUR KHUNT
相关产品推荐
相关产品推荐

