显示两个日期之间的差异
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;
}
}
我正在使用 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;
}
}