答案 0 :(得分:0)
我创建了一个自定义管道,在该管道中,我将日期的年部分作为所有日期的常量,然后对它们的时间进行补偿以使日期按升序排列。 Date.getTime()将给出自1970年1月1日起经过的毫秒数(如果我们在此点之前有日期,则它将为负数)。由于共同映射的日期将其年份设置为“ 2000”,因此所有日期都将以正毫秒为单位给出getTime()。
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'sortDate'
})
export class SortDatePipe implements PipeTransform {
transform(value: any, args?: any): any {
return value.sort((a, b) => {
let firstDate = new Date(a);
let secondDate = new Date(b);
firstDate.setFullYear(2000);
secondDate.setFullYear(2000);
if (firstDate.getTime() < secondDate.getTime()) {
return -1
}
return 1
})
}
}
https://stackblitz.com/edit/angular-hsdkau?file=src%2Fapp%2Fapp.component.html
答案 1 :(得分:0)
我只是在上面扩展@xyz的答案,并建议您做这样的事情,
dobDates = [
'1949-04-06',
'1963-04-11',
'1965-04-05',
'1970-04-12'
]
ngOnInit(){
this.dobDates.sort((a, b) => {
let firstDate = new Date(a);
let secondDate = new Date(b);
firstDate.setFullYear(2000);
secondDate.setFullYear(2000);
if (firstDate.getTime() < secondDate.getTime()) {
return -1
}
return 1
})
}
分选和过滤管的性能较差,并防止过度缩小。结帐Angular Documentation