如何按顺序排序日期.日期格式为dd/mm/yyyy(31/12/2015)或dd- mm -yyyy



我有这样的场景,我需要排序日期与不同的格式,如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-yyyydd/mm/yyyy,甚至混合使用

最新更新