首页 > 解决方案 > 对格式不正确的日期进行排序

问题描述

我正在从 excel 表中获取输入,并且日期不是可以操作的正确 ISO 格式,即该列如下所示,我正在尝试使用 javascript 日期和时刻将其转换为正确日期来对其进行排序但是我是没有得到正确的输出我可以在这个问题上使用第二个意见。

标签: javascriptnode.jssortingdatemomentjs

解决方案


比较函数应该返回一个负数来表示小于,一个正数表示大于,并且0等于,而不是true/ false。此外,由于您已经在使用moment,因此也可以使用它来解析日期:

function dateCompare(d1, d2) {
    const d1Parsed = moment(d1, "DD/MM/YY");
    const d2Parsed = moment(d2, "DD/MM/YY");
    if (d1Parsed.isBefore(d2Parsed)) {
        return -1;
    } else if (d1Parsed.isSame(d2Parsed)) {
        return 0;
    } else {
        return 1;
    }
}

或者,取它们的时间戳的差异(如果d1Parsed在之前,d2Parsed那么它的时间戳会更小,所以得到的减法将是负数,如果它们相等,它将是 0,如果它更大,它将是正数,做与前面的代码相同):

function dateCompare(d1, d2) {
    const d1Parsed = moment(d1, "DD/MM/YY");
    const d2Parsed = moment(d2, "DD/MM/YY");
    return d1Parsed.valueOf() - d2Parsed.valueOf();
}

推荐阅读