You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python3中实现与NodeJS date-from-num一致的时间戳转换?

解决Python与Node.js时间戳解析结果不一致的问题

这个问题的核心是时区差异加上一个格式占位符的小错误——Node.js的date-from-num工具返回的是UTC标准时间,而你最初的Python代码犯了两个小错误:

  1. 使用datetime.fromtimestamp()默认将时间戳转换为本地时区的时间,而非UTC;
  2. strftime格式字符串里用了%S(代表秒)而不是%M(代表分钟),导致结果显示异常。

正确的解决方案

要让Python输出和Node.js完全一致的结果,你需要:

  • 用datetime.utcfromtimestamp()解析时间戳,直接得到UTC时间;
  • 使用正确的格式占位符,或者直接生成ISO 8601格式的UTC时间字符串。

代码示例

from datetime import datetime

# 解析UTC时间(和Node.js逻辑一致)
utc_dt = datetime.utcfromtimestamp(1524231846)

# 方法1:生成和Node.js完全相同的格式
print(utc_dt.strftime('%Y-%m-%dT%H:%M:%S.000Z'))
# 输出:2018-04-20T13:44:06.000Z

# 方法2:用isoformat简化格式拼接
print(f"{utc_dt.isoformat()}.000Z")
# 同样输出:2018-04-20T13:44:06.000Z

为什么最初的代码有问题?

  • datetime.fromtimestamp(1524231846)会根据你的系统时区转换时间(比如如果你在东一区,会得到14:44的本地时间),和Node.js返回的UTC时间自然有偏差;
  • 你用的%S是秒的占位符,所以之前得到的14:06里的06其实是秒数,不是分钟——正确的分钟占位符是%M,这也是导致你误以为“分钟差异”的原因之一。

内容的提问来源于stack exchange,提问作者slysid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:16:25