Javascript AngularJS错误的unix时间分析结果

Javascript AngularJS错误的unix时间分析结果,javascript,unix,angularjs,timestamp,Javascript,Unix,Angularjs,Timestamp,我有一个时间戳1378028575,它给了我Sun,2013年9月1日09:42:55 GMT。但是当我尝试用Angulardate格式化它时,它返回的格式是Jan 171970 2:47:08 AM,使用以下格式:{{'1378028575'| date:'medium'}。现场的结果是正确的,但在角度上是错误的。为什么会发生这种情况,或者我做错了什么?这是因为你使用的是秒而不是毫秒 new Date(1378028575) Fri Jan 16 1970 23:47:08 GMT+0100

我有一个时间戳
1378028575
,它给了我
Sun,2013年9月1日09:42:55 GMT
。但是当我尝试用Angular
date
格式化它时,它返回的格式是
Jan 171970 2:47:08 AM
,使用以下格式:
{{'1378028575'| date:'medium'}
。现场的结果是正确的,但在角度上是错误的。为什么会发生这种情况,或者我做错了什么?

这是因为你使用的是秒而不是毫秒

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或YYYYMMDDHMMSSZ)。如果没有时区 在字符串输入中指定,时间被视为 当地时区


另一个答案并不完全。由于时间戳的单位是秒,而不是毫秒,因此在Angular.js中,您可以执行以下操作:

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

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

日期是Javascript,距离历元只有毫秒。您已使用秒数。试试1378028575*1000,这里给出的答案似乎不正确?他们在那里谈论unix时间,似乎OP也会有同样的问题。谢谢,这对我很有用。我使用Stripe,它以秒而不是毫秒的形式返回所有时间。将每个日期乘以1000就成功了!对于大多数人来说,这可能是更好的答案。在阅读了最初的答案后,我试图决定在哪里解决这个问题。理想情况下,我希望在我的服务中解决这个问题,但它会返回一个承诺。这就给了我一个控制器,但是如果另一个控制器使用这个服务,我将不得不重复代码或创建一个帮助器函数。然后我读了你的答案。理想情况下,该服务将是处理此问题的地方,但我不确定完全重写是否可行。