【问题标题】:Angular2+ How to display milliseconds from date?Angular2 +如何显示日期的毫秒数?
【发布时间】:2017-10-06 10:45:55
【问题描述】:

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

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

管道输出:08.05.2017 15:45:38.38

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

我是 Javascript 新手,我不确定这是 Javascript 还是 Angular 问题,但是,我希望它在 Angular 中工作。 是否可以使用管道来做到这一点,还是有另一种/更好的方法来做到这一点?

【问题讨论】:

  • 能否在示例中添加更多数据? log.LogDate 值和完整的jsonDate 管道列表。
  • 感谢您的评论,我已经用相关数据更新了问题。

标签: javascript angular datetime pipe milliseconds


【解决方案1】:

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


所以你的例子看起来像

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



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

【讨论】:

    【解决方案2】:

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

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

    如果您想在不导入外部库的情况下摆脱这种肮脏的方式,您可以按原样使用 Angular 日期管道(仅包含秒数),然后通过管道自行添加毫秒。

    【讨论】:

      【解决方案3】:

      另一种可能性是使用 angulars 管道并通过 javascript 方法提取毫秒数:

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

      【讨论】:

        猜你喜欢
        • 2016-11-02
        • 2014-10-12
        • 2019-12-09
        • 1970-01-01
        • 2018-11-21
        • 2021-06-30
        • 2014-12-07
        • 2015-09-16
        • 2015-10-22
        相关资源
        最近更新 更多