回调函数将日期排序为字符串

时间:2012-11-24 22:38:34

标签: javascript sorting

我在JS中有一个字符串数组,表示格式为M / D / Y的日期,其中M和D各有一个或两个数字。 如何编写回调函数来对这个数组进行排序?

2 个答案:

答案 0 :(得分:3)

Date.parse()(新的Date(字符串)是等价的)在JS实现中是不一致的,所以我应该首先手动解析日期字符串以保持一致性,然后完全像Minko Gechev建议的那样:

array.sort(function (d1, d2) {
  function parseDate(str) {
    var parts = str.match(/(\d+)/g);
    // assumes M/D/Y date format
    return new Date(parts[2], parts[0]-1, parts[1]); // months are 0-based
  }
  return parseDate(d1) - parseDate(d2);
});

顺便说一下,我认为你几乎总是更好地存储Date对象而不是字符串,然后将Dates格式化为字符串,当你需要它们输出时,因为它使得这个这种操作更容易,也使你的代码更清晰。

答案 1 :(得分:1)

您还可以将字符串拆分为其m d y组件并比较组件。

array.sort(function(a,b){
  var a1= a.split('/'), b1=b.split('/');
  if(a1[2]==b1[2]){
    return (a1[0]==b1[0])? a1[1]-b1[1]: a1[0]-b1[0];
  }
  return a1[2]-b1[2];
}