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

AngularJS插值中时间戳转换日期错误问题排查

问题原因与解决方案

嗨,这个问题我太熟啦!你遇到的是AngularJS date过滤器的一个常见小坑:

核心问题

你使用的时间戳1519347000是秒级时间戳,但AngularJS的date过滤器默认只认毫秒级时间戳。当你直接把秒级时间戳丢进去时,它会把这个数值当作毫秒来解析,所以计算出来的时间就是Unix纪元(1970年1月1日)之后的1519347秒,也就是你看到的Jan 18 1970, 04:02。

两种解决办法

  • 直接在视图中转换:在插值表达式里把时间戳乘以1000,转换成毫秒级再传给过滤器:
    {{$ctrl.myTimestamp * 1000 | date:'MMM d y, hh:mm'}}
    
  • 在控制器中提前处理:如果不想在视图里写计算逻辑,可以在控制器里先把时间戳转成毫秒:
    // 控制器内处理示例
    this.myTimestamp = 1519347000 * 1000;
    
    之后视图里就可以直接用原来的过滤器写法啦:
    {{$ctrl.myTimestamp | date:'MMM d y, hh:mm'}}
    

验证一下

把1519347000乘以1000得到1519347000000,这个毫秒级时间戳对应的正好是你预期的February 23, 2018 12:50,完全正确~

小提醒:很多后端接口返回的时间戳都是秒级的,前端处理的时候一定要注意和JS的时间单位(毫秒)对齐哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:39:53