使用 moment angular 排序日期无效

Sorting date using moment angular is not working

我有一个在 Angular ts 文件中调用的 sortDate 方法。

import * as moment from 'moment';     
sortDate(a,b){
        const dateIsAfter = moment(a).isAfter(moment(b));
        const dateIsSame = moment(a).isSame(moment(b));
        const dateIsBefore = moment(a).isBefore(moment(b));
        if(dateIsAfter) {
          console.log('Input Date 1 :',a, ' Input Date 2: ',b ,' Returned dateIsAfter:',-1 * this.sortOrder );
          return -1 * this.sortOrder;
        }else if(dateIsBefore) {
          console.log('Input Date 1 :',a, ' Input Date 2: ',b ,' Returned dateIsBefore:',1 * this.sortOrder );
          return 1 * this.sortOrder;
        }else{
          return 0 * this.sortOrder;
        }
      }

调用了 sortDate 方法:

this.sortDate(new Date(a[column]), new Date(b[column]));

我在控制台的输出:

2021 年的排序工作得很好。但是,当尝试使用 2022 年进行验证时,突出显示的 2021 年 10 月 8 日应该在 2022 年 3 月之后。但是,它 returns 第一个日期是不正确的,结果是 3 月应该在上面的 2022 下降了。同样,2022 年 3 月的所有内容都安排得很好。为什么会这样。

当使用下面的 sortDate() 方法时,它在 chrome 中工作正常。但是它在 firefox

中不起作用
sortDate(a,b){
       return new Date(a).getTime() - new Date(b).getTime()
}

chrome 中的输出:

Firefox 上的输出:

如果您可以通过将日期转换为毫秒来比较日期,那么使用 moment 的原因是什么:

sortDate(a,b){
// or  return new Date(b).getTime() - new Date(a).getTime()
       return new Date(a).getTime() - new Date(b).getTime()
}

const dates = [ '03-MAR-2022 13:40:00', '02-MAR-2022 10:21:37', '31-DEC-2021 18:00:00', '31-DEC-2021 18:00:00', '31-DEC-2021 17:03:00', '31-DEC-2021 17:01:02', '31-DEC-2021 17:01:01', '31-DEC-2021 17:00:00', '08-OCT-2021 17:00:00', '08-NOV-2021 17:00:00', '22-DEC-2021 17:00:00', '30-DEC-2021 17:00:00'];

function sortDate(a,b){
    return new Date(b).getTime() - new Date(a).getTime()
    // or return new Date(a).getTime() - new Date(b).getTime()
}

dates.sort(sortDate);

console.log(dates);

@MikeOne 提到过,这不是一个好的选择,因为它已被弃用,所以避免在项目中使用它