如何在Python中将特定格式的当前时间转换为epoch时间?
特定格式时间转Epoch毫秒时间解决方案
问题原因
strftime('%s')仅支持输出当前时间的秒级Epoch,无法解析带时区、毫秒的复杂时间字符串,且不支持通过该格式符逆向转换时间字符串到Epoch,因此会触发格式异常。
解决方案(Python示例)
针对「Wednesday, November 16, 2022 4:21:33.082 PM GMT+05:30」这种格式,需先处理时区格式,再用datetime.strptime解析,最后转换为毫秒级Epoch:
from datetime import datetime time_str = "Wednesday, November 16, 2022 4:21:33.082 PM GMT+05:30" # 处理时区格式:去掉GMT,将+05:30转为+0530(符合strptime的%z格式要求) processed_time = time_str.replace("GMT", "").replace(":", "", 1) # 定义匹配格式字符串 fmt = "%A, %B %d, %Y %I:%M:%S.%f %p %z" # 解析为datetime对象 dt = datetime.strptime(processed_time, fmt) # 转换为毫秒级Epoch(timestamp()返回秒级浮点数,乘1000后取整) epoch_ms = int(dt.timestamp() * 1000) print(epoch_ms) # 输出:1668595893082
格式符说明
%A:星期全称(如Wednesday)%B:月份全称(如November)%d:两位日期(如16)%Y:四位年份(如2022)%I:12小时制的小时数(如04)%M:两位分钟(如21)%S:两位秒数(如33)%f:六位毫秒数(输入为三位时,strptime会自动补零)%p:AM/PM标识%z:±HHMM格式的时区偏移(处理后+0530符合要求)
解决方案(JavaScript示例)
JavaScript的Date构造函数可直接解析该格式,通过getTime()获取毫秒级Epoch:
const timeStr = "Wednesday, November 16, 2022 4:21:33.082 PM GMT+05:30"; const epochMs = new Date(timeStr).getTime(); console.log(epochMs); // 输出:1668595893082
内容的提问来源于stack exchange,提问作者Asit
相关产品推荐
相关产品推荐

