我对函数排序日期有一些疑问。我想按ASC或DESC对所有日期进行排序,但排序不正确。
我的约会
let a = [
"03/12/2019", "17/10/2020", "02/12/2019", "08/12/2019", "13/02/2020",
"23/03/2020", "18/11/2020", "29/02/2020", "05/12/2019", "03/06/2020",
"06/05/2020", "09/09/2020", "28/10/2020", "07/04/2020", "27/04/2020",
"28/05/2020", "29/12/2019", "31/10/2020", "23/09/2020", "25/12/2019",
"14/01/2020", "30/09/2020", "18/05/2020", "14/06/2020", "25/04/2020",
"19/08/2020", "26/03/2020", "19/05/2020", "15/03/2020", "11/10/2020",
"25/04/2020", "16/12/2019", "14/08/2020", "19/08/2020", "28/02/2020",
"01/01/2020", "07/06/2020", "17/11/2020", "22/05/2020", "31/07/2020",
"20/01/2020", "07/02/2020", "18/08/2020", "16/02/2020", "13/03/2020",
"21/12/2019", "02/03/2020", "24/07/2020", "01/05/2020", "31/01/2020",
"25/11/2020", "07/07/2020", "16/07/2020", "06/07/2020", "16/09/2020",
"29/07/2020", "19/06/2020", "09/08/2020", "25/08/2020", "21/02/2020",
"30/11/2019", "04/06/2020", "06/09/2020", "10/09/2020", "26/11/2020",
"22/07/2020", "21/05/2020", "25/07/2020", "05/01/2020", "17/06/2020",
"14/07/2020"
];
功能排序
b.sort((d1, d2) => new Date(d1).getTime() - new Date(d2).getTime());
或替代
b.sort((b, a) => {
if (b > a) {
return 1;
}
if (b < a) {
return -1;
}
return 0;
})
这是因为日期采用英国格式,因此无论月份还是年份,它都将按升序对日期进行排序。如果将它们转换为YYYY-MM-DD格式,它将为您正确排序:
let a = ["03/12/2019", "17/10/2020", "02/12/2019", "08/12/2019", "13/02/2020"]; // etc.
function ukToUsDate(ukDate) {
let dateArr = ukDate.split('/');
return `${dateArr[2]}-${dateArr[1]}-${dateArr[0]}`;
}
for (let i = 0; i < a.length; i++) {
a[i] = ukToUsDate(a[i]);
}
a.sort((b, a) => {
if (b > a) {
return 1;
}
if (b < a) {
return -1;
}
return 0;
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句