以Javascript格式对日期进行排序,格式为dd/mm/yyyy
我对函数排序日期有点问题。我想按ASC或DESC对所有日期进行排序,但排序不正确 我的约会对象 函数排序 或替代品以Javascript格式对日期进行排序,格式为dd/mm/yyyy,javascript,sorting,date,Javascript,Sorting,Date,我对函数排序日期有点问题。我想按ASC或DESC对所有日期进行排序,但排序不正确 我的约会对象 函数排序 或替代品 b.sort((b, a) => { if (b > a) { return 1; } if (b < a) { return -1; } return 0; }) 切勿使用新的Datestring构造函数或解析日期字符串,因为这两种方法都不允许您提供特定的格式或区域设置信息 JavaScript的新Datestring和Date.pars
b.sort((b, a) => {
if (b > a) {
return 1;
}
if (b < a) {
return -1;
}
return 0;
})
切勿使用新的Datestring构造函数或解析日期字符串,因为这两种方法都不允许您提供特定的格式或区域设置信息
JavaScript的新Datestring和Date.parsestring函数倾向于使用用户计算机的区域设置来解析日期-如果用户使用的是Windows的en-US设置,而没有意识到,则Date.parsestring和新Datestring会将日期解释为MM/dd/yyyy,而不是其正确的区域设置。然而,浏览器倾向于尝试解析你向他们抛出的任何东西,如果他们看到2019年12月31日或2019年12月31日,那么无论他们的计算机区域设置如何,他们都会被解析为2019-12-31——只有在2019年7月5日给出时,事情才会分崩离析,例如,如果他们在美国,将被解释为2019-05-07;如果他们在英国,将被解释为2019-07-05
不幸的是,您需要手动解析它们,或者使用类似于Moment.JS的同行评审库,因为编写日期库很困难
切勿使用新的Datestring构造函数或解析日期字符串,因为这两种方法都不允许您提供特定的格式或区域设置信息
JavaScript的新Datestring和Date.parsestring函数倾向于使用用户计算机的区域设置来解析日期-如果用户使用的是Windows的en-US设置,而没有意识到,则Date.parsestring和新Datestring会将日期解释为MM/dd/yyyy,而不是其正确的区域设置。然而,浏览器倾向于尝试解析你向他们抛出的任何东西,如果他们看到2019年12月31日或2019年12月31日,那么无论他们的计算机区域设置如何,他们都会被解析为2019-12-31——只有在2019年7月5日给出时,事情才会分崩离析,例如,如果他们在美国,将被解释为2019-05-07;如果他们在英国,将被解释为2019-07-05
不幸的是,您需要手动解析它们,或者使用类似于Moment.JS的同行评审库,因为编写日期库很困难
这是因为日期是英国格式的,所以它将按升序日期排序,而不考虑月份或年份。如果将它们转换为YYYY-MM-DD格式,它将为您正确排序: 假设a=[2019年12月3日、2020年10月17日、2019年12月2日、2019年12月8日、2020年2月13日];//等 函数ukToUsDateukDate{ 设dateArr=ukDate.split'/'; 返回`${dateArr[2]}-${dateArr[1]}-${dateArr[0]}`; } 对于let i=0;i
如果date1大于1,则返回1。如果日期2更大,则返回-1。向投票人解释:你能为我们其他人解释OP的意思吗?OP的系统以MM/dd/yyyy格式解释日期,并按该顺序排序,而不是将其解析为dd/MM/yyyyy,这是OP的意向。对投票人说:你能为我们其他人解释一下OP的意思吗?从上下文中可以清楚地看出,OP的系统是以MM/dd/yyyy格式解释日期,并按该顺序排序,而不是将其解析为dd/MM/yyyy,这是OP的意图。谢谢你的帮助,这是用其他格式转换我的日期,但这很好:@Valentin还有什么其他格式的日期?你在帖子中没有提到这一点。谢谢你的帮助,它可以将我的约会转换为其他格式,但这很好:@Valentin还有什么其他格式的约会?你在帖子里没提到。
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;
})
let dates = [ "03/12/2019", "17/10/2020", "02/12/2019", ... ];
function parseDate( ddMMyyyy ) {
const components = ddMMyyyy.split( '/' );
if( components.length != 3 ) return null;
const dd = parseInt( components[0] );
const MM = parseInt( components[1] );
const yyyy = parseInt( components[2] );
// Component range checking:
if( dd >= 1 && dd <= 31 && MM >= 1 && MM <= 12 && yyyy >= 0 && yyyy <= 9999 ) {
return new Date( yyyy, MM - 1, dd ); // `MM - 1` because JavaScript months are 0-based.
}
else {
return null;
}
}
let sortedParsedDates = dates
.map( parseDate )
.filter( dt => dt instanceof Date )
.sort( ( x, y ) => x.getTime() - y.getTime() );
const sortDate = (date1,date2) => {
const a = date1.split("/").map((i) => parseInt(i));
const b = date2.split("/").map((i) => parseInt(i));
return a[2] > b[2]
? 1
: a[2] < b[2]
? -1
: a[1] > b[1]
? 1
: a[1] < b[1]
? -1
: a[0] > b[0]
? 1
: a[0] < b[0]
? -1
: -1;
};
sortDate("01/11/2011","23/02/2010"); //returns 1