10

我有一个1378028575给我Sun, 01 Sep 2013 09:42:55 GMT 时间戳。但是当我尝试使用 Angular 对其进行格式化时date,它会Jan 17, 1970 2:47:08 AM使用以下格式将其返回为 : {{'1378028575' | date:'medium'}}。该站点的结果是正确的,但在 Angular 中是错误的。为什么会发生,或者我做错了什么?

4

2 回答 2

19

它的原因是您使用秒而不是毫秒。

new Date(1378028575)
Fri Jan 16 1970 23:47:08 GMT+0100 (CET)

new Date(1378028575000)
Sun Sep 01 2013 11:42:55 GMT+0200 (CEST)

来自角度文档:

日期格式化为日期对象、毫秒(字符串或数字)或各种 ISO 8601 日期时间字符串格式(例如 yyyy-MM-ddTHH:mm:ss.SSSZ 及其较短的版本,如 yyyy-MM-ddTHH:mmZ、yyyy-MM -dd 或 yyyyMMddTHHmmssZ)。如果在字符串输入中未指定时区,则时间被认为是本地时区。

于 2013-09-09T10:41:15.917 回答
13

另一个答案不是很完整。由于您的时间戳以秒为单位,而不是毫秒,因此在 Angular.js 中您可以这样做:

{{1378028575 * 1000 | date:'medium'}}

知道秒 * 1000 = 毫秒是一回事。知道您可以将数学放在日期表达式中是另一回事:)

于 2015-02-23T05:34:05.510 回答