在JavaScript中从最早到最新的数组中排序日期

时间:2015-02-25 21:28:27

标签: javascript

在JavaScript中从最早到最新的数组中排序日期的最佳方法是什么? dateArray.sort()似乎根本不起作用。

这是我到目前为止所尝试的:

var dateArray = new Array();
for(i=0;i<timelineItemCount;i++)
{
    var today = new Date();
    var randomDates = randomDate(today, new Date(today.getFullYear(), today.getMonth(), today.getDate()+7));
    dateArray.push(randomDates);
}   
dateArray.sort();
console.log(dateArray);

function randomDate(start, end) {
    return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
}

2 个答案:

答案 0 :(得分:2)

日期对象内置了比较,您只需要告诉它该做什么。

dateArray.sort(function (a, b) {
  return (a > b) - (a < b);
});

答案 1 :(得分:2)

将您自己的比较功能传递给sort

dateArray.sort(function (a, b) {
    return a - b;
});

另请注意.sort上的MDN页面:

  

<强>的compareFunction

     

可选。指定定义排序顺序的函数。如果省略,则根据每个字符的Unicode代码点值对数组进行排序,具体取决于每个元素的字符串转换。

默认情况下,您按照toString()方法的结果按字母顺序对日期进行排序,这可能按字母顺序按星期几显示。