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

Unix毫秒时间戳转换可读日期格式错误问题求助

问题排查与解决

嘿,这个问题很典型——你不小心把毫秒时间戳多放大了1000倍!

错误原因分析

你给出的时间戳1525772511140是13位的毫秒级Unix时间戳,但你的代码里做了new Date(1525772511140 * 1000),这就把它变成了微秒级的超大数值,Date对象解析这个数值时,自然会返回一个离谱的远未来日期(就是你看到的50319年)。

另外,你原本的moment格式字符串DD-MM-YYYY HH:mm也不符合预期需求:

  • HH是24小时制,而你需要的是12小时制(带AM/PM)
  • 缺少秒数的显示

修正后的代码

直接去掉多余的*1000,同时调整moment的格式字符串即可。这里给你两种写法:

写法1:保留Date对象(按你原代码逻辑修改)

var timeStamp = new Date(1525772511140); // 去掉多余的*1000
var date = moment(timeStamp).format('DD-MM-YYYY h:mm:ssA'); 
console.log(date); // 输出:29-05-2018 9:41:51AM

写法2:直接用moment处理时间戳(更简洁)

Moment本身支持直接传入毫秒时间戳,不需要先创建Date对象:

var date = moment(1525772511140).format('DD-MM-YYYY h:mm:ssA');
console.log(date); // 输出:29-05-2018 9:41:51AM

格式字符串说明

  • DD:两位日期(29)
  • MM:两位月份(05)
  • YYYY:四位年份(2018)
  • h:12小时制的小时(不带前导零,比如9)
  • mm:两位分钟(41)
  • ss:两位秒数(51)
  • A:大写的AM/PM标识(AM)

如果想要小时带前导零(比如09),把h改成hh即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:08:36