【问题标题】:jQuery date sorting [duplicate]jQuery日期排序[重复]
【发布时间】:2012-05-25 02:13:01
【问题描述】:

可能重复:
Javascript date sorting by convert the string in to date format

我不擅长 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>

谢谢

【问题讨论】:

  • 看看这个问题 -> stackoverflow.com/questions/2769301/… 看起来和你的差不多。
  • 附带说明,使用重复的ids 是一个很大的禁忌。
  • @RichardNeilIlagan:对不起我的错误。为了方便起见,我没有在实际代码中使用重复的 id 我只是在示例中复制粘贴了相同的潜水。

标签: javascript jquery datetime sorting


【解决方案1】:

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

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 回答有关解析日期的问题:Why does Date.parse give incorrect results?

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);​

现在,别告诉我这行不通……呵呵

【讨论】:

  • 这不起作用 - 这不是 Date 构造函数的有效字符串。
  • 我不知道为什么......但这有效:jsfiddle.net/jCkCP
  • 它对我不起作用:jsfiddle.net/WpTb5/1 也许它取决于浏览器/操作系统?
  • 我已经更新了答案...这绝对可以工作
  • 不... console.log(Date.parse( $(a)​​.text() ));//NaN.更新:这取决于浏览器:适用于 Chrome,不适用于 Firefox。
【解决方案2】:

您可以使用date.js 库结合this 排序功能来做到这一点:

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

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

【讨论】:

  • 这对我来说效果很好,但我发现 Date.js 解析日期比使用上面 Parth Thakkar 的 parseDate 函数要慢得多。希望对某人有所帮助。
  • 该库上次更新是 9 年前。
  • @NinoŠkopac 见github.com/datejs/Datejs
  • 更新了链接以表明这一点
猜你喜欢
  • 2015-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
  • 2020-05-05
相关资源
最近更新 更多