将时间戳转换为角度表达式中的日期,如{{new Date(timestamp)}}

时间:2014-02-18 08:48:22

标签: javascript angularjs

今天我发现它无法转换角度表达式中的日期。

所以我只是做了像

这样的事情
<th>{{new Date(elem.timestamp}}</th>

但它因内部角度误差而失败。

那么为什么不能在角度表达式中强制转换为日期?

7 个答案:

答案 0 :(得分:26)

因为角度表达式不接受任意Javascript代码,包括创建新对象。您正在寻找的是角度过滤器,它们是专为此案例设计的。

所以而不是

{{new Date(elem.timestamp)}}

你应该写

{{elem.timestamp | date: 'yyyy-MM-dd'}}

可以找到有关日期过滤器的更多信息here。有关过滤器的更多信息,请参见here

答案 1 :(得分:5)

如果要处理Firebase时间戳记对象(https://firebase.google.com/docs/reference/android/com/google/firebase/Timestamp),则可以使用:

{{elem.timestamp.seconds*1000 | date}}

答案 2 :(得分:2)

使用Firebase时间戳进行处理:

{{ element.seconds * 1000| date:'short' }}

答案 3 :(得分:1)

最好使用像moment这样的库。您正在寻找的功能也应通过“filters

实现

另见angular-moment

答案 4 :(得分:1)

只是延伸@package所提到的我们也可以从毫秒到小时秒,格式也可以是任何模式

< th >{{elem.timestamp | date: 'yyyy/MM/dd h:mm:ss a'}}< /th >

答案 5 :(得分:1)

当时间戳以毫秒为单位时: 仅日期:

{{elem.timestamp | date: 'yyyy-MM-dd'}}

日期和时间:

{{elem.timestamp | date: 'yyyy/MM/dd hh:mm:ss a'}}

日期和时间(24小时格式):

{{elem.timestamp | date: 'yyyy/MM/dd HH:mm:ss'}}

当时间戳以秒为单位时,只需乘以1000:

{{elem.timestamp*1000 | date: 'yyyy/MM/dd HH:mm:ss'}}

答案 6 :(得分:0)

正在转换 Angular 表达式中的日期。

所以我只是做了一些类似的事情:

{{elem.timestamp | date: 'yyyy-MM-dd'}}