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

使用date-fns-tz格式化Stripe时间戳持续返回1970年问题求助

问题解决:date-fns-tz转换Stripe时间戳返回1970年日期

你的问题出在两个核心点:

  • Stripe返回的时间戳是秒级(1695112577),但JavaScript的Date构造函数默认需要毫秒级时间戳
  • 你把时间戳以字符串形式传给new Date,触发了错误的日期解析逻辑

修正后的代码如下:

import { formatInTimeZone } from 'date-fns-tz'

// 将秒级时间戳转为数字后乘以1000得到毫秒级
const timestampMs = Number('1695112577') * 1000
formatInTimeZone(new Date(timestampMs), user.timezone, 'eeee, MMMM do yyyy h:mm aaa')

关键说明:

  1. 时间戳单位转换:Stripe API返回的Unix时间戳是秒数,必须乘以1000转换成毫秒,才能被Date正确识别为对应时间点
  2. 避免字符串解析:直接传递字符串形式的时间戳给new Date会触发浏览器的模糊日期解析,大概率解析失败,所以要先转成数字再处理

调整后就能得到符合用户时区的正确日期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:52:01