我有这样的场景,我需要排序日期与不同的格式,如dd/mm/yyyy (31/12/2015)
和mm/dd/yyyy (12/31/2015)
。
对于mm/dd/yyyy (12/31/2015)
,我使用这个sortedKey = sortedKey.sort(function(a,b) { return a - b;})
,但我如何排序这个格式mm/dd/yyyy
JavaScript不能处理dd/mm/yyyy
格式的日期。
如果有 mm/dd/yyyy
格式的日期,则可以将字符串转换为Date
,然后比较:
var arr = ['01-01-2015', '03-03-2015', '07-30-2015', '12-30-2014']; // mm-dd-yyyy
arr.sort(function(a, b) {
var aDate = new Date(a);
var bDate = new Date(b);
return (aDate < bDate ? -1 : 1);
});
document.write(arr.join("<br/>"));
解决这个问题的最好方法是改变日期的格式。
但是,如果不能更改日期的格式,则可以使用一些技巧,例如使用正则表达式:
进行解析function parse_ddmmyyyy(str) // example: for str = '07-30-2015'
{
var numbers = str.match(/d+/g); // numbers will be [7,30,2015]
return new Date(numbers[2], numbers[1]-1, numbers[0]); // new Date(2015, 6, 30)
}
// dd-mm-yyyy (dd/mm/yyyy)
var arr = ['01-01-2015', '03-03-2015', '30-07-2015', '30/12/2014', '18/11/2016', '03-11-2014', '02/01/2015'];
arr.sort(function(a, b) {
var aDate = parse_ddmmyyyy(a);
var bDate = parse_ddmmyyyy(b);
return (aDate < bDate ? -1 : 1);
});
document.write(arr.join("<br/>"));
这将同时适用于dd-mm-yyyy
和dd/mm/yyyy
,甚至混合使用