使用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')
关键说明:
- 时间戳单位转换:Stripe API返回的Unix时间戳是秒数,必须乘以1000转换成毫秒,才能被
Date正确识别为对应时间点 - 避免字符串解析:直接传递字符串形式的时间戳给
new Date会触发浏览器的模糊日期解析,大概率解析失败,所以要先转成数字再处理
调整后就能得到符合用户时区的正确日期结果。
内容的提问来源于stack exchange,提问作者BigJobbies
相关产品推荐
相关产品推荐

