显示两个日期之间的差异

Display difference between two dates

我正在使用 Angular JS 8 开发一个项目,我愿意稍微简化我正在做的工作。这是交易:

我正在从后端检索数据如下:

[{
    "id": "1",
    "start_time": "2020-01-12T10:00:000Z",
    "end_time": "2020-01-12T12:00:000Z"
},
{
    "id": "2",
    "start_time": "2020-01-15T11:30:000Z",
    "end_time": "2020-01-15T14:00:000Z"
},
{
    "id": "3",
    "start_time": "2020-01-19T12:00:000Z",
    "end_time": "2020-01-19T18:40:000Z"
}]

我需要用普通的 table 显示 end_time 和 start_time 之间的区别,像这样:

id | start - end (time)
1  |  2 hours and 00 min
2  |  2 hours and 30 min
3  |  6 hours and 40 min

我在我的控制器中使用 moment.js 来计算这两个日期之间的差异,但我想知道是否有更好的方法直接在 HTML 中执行此操作,而不是迭代检索数据并执行此操作。

好的,我终于创建了一个如下所示的自定义管道:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'substractDate'
})
export class SubstractDatePipe implements PipeTransform {

  transform(fromDate: Date, substractDate: Date): string {
    const difference = fromDate.valueOf() - substractDate.valueOf();

    const minutes = Math.floor((difference / (1000 * 60)) % 60);
    const hours = Math.floor(difference / (1000 * 60 * 60) % 24);

    return `${this.formatTime(hours)}:${this.formatTime(minutes)}`;
  }

  formatTime(time: number): string {
    const formattedTime = (time < 10) ? '0' + time : time.toString();
    return formattedTime;
  }

}