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

如何实现JavaScript时间戳与Python时间戳的互相转换

时间戳格式说明

服务端返回的cctv_times字段是16位微秒级Unix时间戳,计数规则为UTC时区1970年1月1日0点起累计的微秒总数。
你看到值末尾带多个0,是因为该服务的时间采集精度仅到毫秒级,毫秒位之后的3位微秒值统一补0占位,不存在特殊编码。
对样例值1655375216687000做拆解:

  • 前10位1655375216:秒级Unix时间戳,对应UTC时间2022-06-16 10:26:56
  • 中间3位687:毫秒偏移量
  • 最后3位000:补位的微秒段,无实际精度意义
Python 生成服务端兼容时间戳

你之前用的datetime.now().strftime("%s%f")写法存在两个兼容问题:

  • %s是类Unix系统专属的格式化占位符,Windows环境下运行会直接报错
  • 生成的是系统真实微秒值,末尾不会自动补0,和服务端返回的格式特征不匹配

根据服务端的校验严格程度,可选择两种实现方案:

import time
from datetime import datetime

# 方案1:完全匹配服务端返回格式(毫秒精度,微秒位固定补3个0)
ms_ts = int(time.time() * 1000)  # 先生成13位毫秒级时间戳
server_compatible_ts = f"{ms_ts}000"

# 方案2:真实微秒级时间戳(跨平台兼容,适用于服务端不强制校验末尾0的场景)
now = datetime.now()
real_us_ts = str(int(now.timestamp() * 1_000_000))

注:如果接口文档没有明确要求微秒位必须为0,优先用方案2,时间精度更高;如果接口校验严格匹配返回样例格式,用方案1即可。

JavaScript 与 Python 时间戳双向转换

首先明确两端默认时间戳的基础差异:

  • JavaScript 原生Date.now()生成的是13位毫秒级Unix时间戳
  • Python 原生time.time()、datetime.timestamp()返回的是秒级浮点数,精度随系统差异可达微秒/纳秒级

JS 时间戳转 Python 可识别格式

JS端转换代码:

// 原生获取JS默认13位毫秒戳
const jsTs = Date.now()
// 转Python默认使用的秒级浮点数
const pySecondTs = jsTs / 1000
// 转业务服务要求的16位微秒格式
const serverFormatTs = `${jsTs}000`

Python端解析代码:

from datetime import datetime

# 解析JS传来的秒级时间戳
dt1 = datetime.fromtimestamp(float(py_second_ts))
# 解析JS转好的16位服务端格式时间戳
dt2 = datetime.fromtimestamp(int(server_format_ts) / 1_000_000)

Python 时间戳转 JS 可识别格式

Python端转换代码:

from datetime import datetime

now = datetime.now()
# 转13位毫秒级时间戳,JS可直接传入Date对象解析
js_compatible_ts = int(now.timestamp() * 1000)

JS端解析代码:

// 直接传入即可生成合法Date对象
const dt = new Date(js_compatible_ts)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:01:14