【问题标题】:JQuery Sort elements by date in format dd/mm/yyyyJQuery 按日期对元素进行排序,格式为 dd/mm/yyyy
【发布时间】:2016-02-18 05:20:38
【问题描述】:

我有一个元素数组,它们都具有dueDate 属性。

但是,日期是 dd/MM/yyyy 格式。

<div class="taskItem" dueDate="02/02/2016"></div>
<div class="taskItem" dueDate="20/02/2016"></div>
<div class="taskItem" dueDate="01/02/2016"></div>

当我进行以下排序时;

    $('.taskItem').sort(function (a, b) {
        var contentA = Date.parse($(a).attr('dueDate'));
        var contentB = Date.parse($(b).attr('dueDate'));
        console.log(contentA)
        return (contentA < contentB) ? -1 : (contentA > contentB) ? 1 : 0;
    })

我在看起来像 20/02/2016 的日期出现错误。 2016 年 2 月 20 日。日/月/年

【问题讨论】:

  • “我得到错误” jQuery 没有.sort() 方法
  • 你一定看过Sort Array data dd-mm-yyy。这没有帮助吗?
  • 我没有,看起来可以。但是,如果在日期中添加了时间组件怎么办?所以 20/02/2016 14:00:00?我想我需要在排序方法中满足这一点。我希望不必操纵我的约会对象。
  • 使用 20/02/2016 而不是 02/20/2016 的目的是什么?
  • 因为我住在澳大利亚,我们使用 dd/MM/yyyy

标签: javascript jquery sorting


【解决方案1】:

将排序方法更改为demo

    function toDate(value)
    {
       var from = value.split(" ")[0].split("/");
       return (new Date(from[2], from[1] - 1, from[0]));
    }
    $('.taskItem').sort(function (a, b) {
        var contentA = toDate($(a).attr('dueDate')).getTime(); //assuming that attribute value will always be a valid date
        var contentB = toDate($(b).attr('dueDate')).getTime();
        console.log(contentA);
        return (contentA < contentB) ? -1 : (contentA > contentB) ? 1 : 0;
    });

比较以毫秒为单位的时间而不是整个日期字符串

【讨论】:

  • 这仍然会在不是 MM/dd/yyyy 的日期上产生 NAN 错误。因此,2016 年 2 月 20 日的日期有效,但 2016 年 2 月 20 日的日期无效。
  • @griegs 已将 parse 方法更新为自定义方法,请检查
  • 那行得通,但如果我的日期是 20/02/2016 13:00:00 就不行了。我想我正在寻找一种方法来解析我拥有的日期而不是操纵它。
  • @griegs 您仍然可以更改 toDate 方法,方法是先用空格分割它以先获取日期部分。
  • 是的,我已经做到了。对我来说似乎倒退了,我需要强制我的日期适合,而不是告诉日期引擎我的格式是什么
猜你喜欢
  • 1970-01-01
  • 2017-10-06
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-15
  • 1970-01-01
  • 2016-01-02
相关资源
最近更新 更多