Angular2+ 如何显示日期的毫秒数?

Angular2+ How to display milliseconds from date?

我之前使用自定义管道显示时间,现在我尝试更改它以便我也可以显示毫秒:

{{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

Output from pipe: 08.05.2017 15:45:38.38

Full jsonDate pipe(no format): 2017-05-08T15:45:38.2527293+02:00

我是 Javascript 的新手,我不确定这是 Javascript 还是 Angular 问题,但是,我希望它能在 [=22] 中工作=]. 是否可以使用管道来做到这一点,或者是否有 another/better 方法来做到这一点?

这是一个 Angular 问题。 AngularJS支持毫秒,但是Angular(2+)不支持(GH issue)。 您可以很好地删除 date 管道并仅使用您自定义的管道来完成此任务。但是,您的示例似乎不能很好地处理日期。无需详细说明,我建议您使用一些外部库来进行格式化 为你在你的管道里。否则会付出很多努力换取很少的回报。我个人选择的武器是 Moment.js 正确导入后,您只需使用:

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

如果您想在不导入外部库的情况下解决这个问题,您可以按原样使用 Angular 日期管道(只有秒),然后通过管道将其添加到您自己的毫秒数。

另一种可能性是使用 angulars 管道并通过 javascript-method:

提取毫秒数
{{ Datetime | date:'dd.MM.yyyy HH:mm:ss' }}.{{ getMillies(Datetime) }}

----

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

随着 Angular 5,一个新的 Date-Pipe 正在进行中,以支持 M

从 angular 5 开始,您可以使用 SSS 为您的日期添加毫秒数。
参见 https://angular.io/api/common/DatePipe


所以你的例子看起来像

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



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