AngularJS错误的unix时间解析结果

时间:2013-09-09 10:34:14

标签: javascript unix angularjs timestamp

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

2 个答案:

答案 0 :(得分: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)

来自angular docs:

  

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

答案 1 :(得分:11)

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

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

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