Python中如何将Unix时间戳列表转换为日期?已尝试多种方法未解决
嘿,我猜你之前转换失败大概率是没注意到这些是毫秒级的Unix时间戳(长度13位,普通Unix时间戳是10位秒级)!别着急,给你几个亲测有效的转换方案,覆盖不同场景:
方法1:Unix/Linux命令行快速转换
系统自带的date工具默认处理秒级时间戳,所以我们先把毫秒转成秒再处理就行:
- 单个转换示例:
运行这条命令就能得到对应时间:
这里date -d @$((1626325266384/1000))$((...))是bash的算术运算,自动帮你把毫秒数除以1000转成秒。 - 批量转换所有时间戳:
把所有时间戳放进数组,用循环批量输出:timestamps=(1626325266384 1626328880748 1626332547188 1626336091854 1626339628069 1626343243866 1626415257315 1626418895970 1626422492406 1626426036647 1626429722183 1626433273664 1626436849458 1626440458241 1626444063135) for ts in "${timestamps[@]}"; do echo "$ts -> $(date -d @$((ts/1000)))" done
方法2:Python脚本精准转换
如果需要更灵活的时间格式(比如UTC/本地时间切换、自定义输出格式),用Python最合适:
import datetime timestamps = [1626325266384, 1626328880748, 1626332547188, 1626336091854, 1626339628069, 1626343243866, 1626415257315, 1626418895970, 1626422492406, 1626426036647, 1626429722183, 1626433273664, 1626436849458, 1626440458241, 1626444063135] for ts in timestamps: # 转换为UTC时间(保留毫秒) utc_time = datetime.datetime.utcfromtimestamp(ts / 1000).strftime("%Y-%m-%d %H:%M:%S.%f") # 转换为本地时间(保留毫秒) local_time = datetime.datetime.fromtimestamp(ts / 1000).strftime("%Y-%m-%d %H:%M:%S.%f") print(f"时间戳: {ts}\nUTC时间: {utc_time[:-3]}\n本地时间: {local_time[:-3]}\n---")
运行后会输出每个时间戳对应的UTC和本地时间,[:-3]是为了只保留三位毫秒数,更符合日常使用习惯;如果不需要毫秒,直接去掉.%f和切片即可。
方法3:JavaScript快速验证
不管是浏览器控制台还是Node.js环境,JS的Date对象直接支持毫秒级时间戳,不用额外转换:
const timestamps = [1626325266384, 1626328880748, 1626332547188, 1626336091854, 1626339628069, 1626343243866, 1626415257315, 1626418895970, 1626422492406, 1626426036647, 1626429722183, 1626433273664, 1626436849458, 1626440458241, 1626444063135]; timestamps.forEach(ts => { const date = new Date(ts); console.log(`${ts} → ${date.toLocaleString()} (UTC: ${date.toUTCString()})`); });
直接复制到浏览器F12的控制台里运行,就能立刻看到转换结果,适合快速验证单个或少量时间戳。
小提醒
之前转换失败的核心原因应该是:很多工具默认只识别10位的秒级Unix时间戳,而你的是13位毫秒级,直接输入的话会得到错误的未来时间。只要记住先把毫秒转成秒(除以1000),或者用支持毫秒级的工具,就能轻松解决啦!
内容的提问来源于stack exchange,提问作者Gautam Jha




