10

可能重复:
通过将字符串转换为日期格式的 Javascript 日期排序

我不擅长 jquery,所以我想知道是否有一种方法或插件可以用来对日期 div 进行排序。我有 YYYY:MM:DD HH:MM:SS 格式的日期。我在 div 中显示日期,如下所示。Divs 是无序的格式,我想先按最新日期对它们进行排序。

<div id="dateDiv">2012-04-15 10:25:45</div>
<div id="dateDiv">2012-04-10 19:41:08</div>
<div id="dateDiv">2012-04-20 07:00:10</div>
<div id="dateDiv">2012-04-12 16:45:50</div>

谢谢

4

2 回答 2

18

我对插件不太了解......虽然如果你想要一个没有插件的轻量级方法,你可以试试这个:

html:

<div id="D">
    <div class="dateDiv">2012-04-15 10:25:45</div>
    <div class="dateDiv">2012-04-10 19:41:08</div>
    <div class="dateDiv">2012-04-20 07:00:10</div>
    <div class="dateDiv">2012-04-12 16:45:50</div>
</div>

对于 js:

var elems = $.makeArray($(".dateDiv"));
elems.sort(function(a, b) {
    return new Date( $(a).text() ) < new Date( $(b).text() );
});
$("#D").html(elems);

更新
感谢 CMS 回答有关解析日期的问题:为什么 Date.parse 给出不正确的结果?

function parseDate(input) {
  var parts = input.match(/(\d+)/g);
  // new Date(year, month [, date [, hours[, minutes[, seconds[, ms]]]]])
  return new Date(parts[0], parts[1]-1, parts[2], parts[3], parts[4], parts[5]); //     months are 0-based
}

var elems = $.makeArray($(".dateDiv"));
elems.sort(function(a, b) {
    console.log( parseDate( $(a).text() ) );
    return parseDate( $(a).text() ) < parseDate( $(b).text() );
});
$("#D").html(elems);​

现在,不要告诉我这不起作用......呵呵

于 2012-05-17T13:51:45.710 回答
9

您可以将date.js库与排序器功能结合使用来执行此操作:

$('#dateDiv').sortElements(function(a, b){
    return Date.parse($(a).text()) > Date.parse($(b).text()) ? 1 : -1;
});

原始 repo 尚未维护,但它的更新分支似乎正在进行中。

于 2012-05-17T13:39:41.033 回答