2017-05-08 110 views
3

我使用的是自定义的管道,用于显示时间,现在我试图改变它,这样我也可以显示毫秒:Angular2 +如何从日期显示毫秒数?

{{log.LogDate|jsonDate|date:'dd.MM.yyyy   HH:mm:ss.sss'}} 

管道本身:

if (typeof (value) === 'string') { 
     if (value.includes('/Date(')) 
      return new Date(parseInt(value.substr(6))); 
    } 
    return value; 

然而,毫秒有的秒值:

log.LogDate:2017-05-08T15:45:38.2527293+ 02:00

从管

输出:2017年5月8日15:45:38.38

完全jsonDate管(无格式):2017-05-08T15:45:38.2527293 + 02:00

我是新来的Javascript ,而且我不确定这是Javascript还是Angular问题,但是,我希望它能够在Angular中使用。 有没有可能使用管道来做到这一点,还是有另一种/更好的方式来做到这一点?

+0

请问您能否在示例中添加更多数据? 'log.LogDate'值和完整的'jsonDate'管道列表。 – borkovski

+0

感谢您的评论,我已经更新了有问题的数据。 –

回答

1

由于角5您可以使用SSS为您的日期添加毫秒。
https://angular.io/api/common/DatePipe


所以,你的例子看起来像

{{log.LogDate|jsonDate|date:'dd.MM.yyyy   HH:mm:ss.SSS'}} 



更新日志的角5:
- [...]
- 现在小数秒支持格式为SSSS
- [...]

2

这是一个角度问题。 AngularJS支持毫秒,但Angular(2+)不支持(GH issue)。 您可以很好地删除date管道,并只使用您的自定义管道执行此任务。然而,你的例子似乎没有很好地处理日期。不用进入细节,我建议你使用一些外部库来为你的管道内的你做格式 。否则,这将是很多努力的小回报。我个人选择的武器是Moment.js 在导入后正确,你会简单地使用:

moment(value).format('DD.MM.YYYY HH:mm:ss.SSS'); 

如果你想有一个肮脏的方式摆脱这种不导入外部库,你可以使用角日期管,因为它是(用秒只有),然后管道它自己添加毫秒。

0

另一种可能性是留在angulars管并提取通过javascript-方法毫秒:

{{ Datetime | date:'dd.MM.yyyy HH:mm:ss' }}.{{ getMillies(Datetime) }} 

---- 

public getMillies(input: Date): number 
{ 
    return new Date(input).getMilliseconds(); 
} 

具有角5,一个新的日期 - 管在进步,支持M

相关问题