javascript - 实用地将日期字符串转换为 yyyy-mm-dd

标签 javascript jquery sorting date

我编写了一个非常小、轻量级的自定义函数,它根据表的值对表进行排序。此函数适用于所有列并且可以很好地缩放。

我遇到的问题是按日期排序。从数据库检索的数据(无法更改)的格式为 dd-mm-yyyy。显然,这是按第一个值排序,这不会给出所需的结果,因为 01-06-2016 不应早于 09-01-2016

我可以编写一个单独的函数来执行各种日期转换和比较,但到目前为止我的尝试已经变得非常臃肿。几乎变得比原来的功能更大。有人可以建议一种干净的方法吗?

演示 http://jsfiddle.net/6sskjbod/565/

function sortTable(order, col) {
  var rows = $('#mytable tbody  tr').get();

  rows.sort(function(a, b) {

    var A = $(a).children('td').eq(col).text().toUpperCase();
    var B = $(b).children('td').eq(col).text().toUpperCase();

    if (order) {
      if (B < A) return -1;
      if (B > A) return 1;
    } else {
      if (A < B) return -1;
      if (A > B) return 1;
    }

    return 0;
  });

  $.each(rows, function(index, row) {
    $('#mytable').children('tbody').append(row);
  });
}

最佳答案

您只需将日期字符串转换为 ISO 格式 (YYYY-MM-DD),然后即可将其转换为 Date 对象。

您的 jQuery sortTable 函数将如下所示:

function sortTable(order, col) {
  var rows = $('#mytable tbody  tr').get();

  rows.sort(function(a, b) {
  var A,B;
 if(col==0)
 {
        valA = $(a).children('td').eq(col).text().split('-');
        valB = $(b).children('td').eq(col).text().split('-');
    A = new Date(valA[2]+"-"+valA[1]+"-"+valA[0]);
    B = new Date(valB[2]+"-"+valB[1]+"-"+valB[0]);;
 }
 else
 {
    A = $(a).children('td').eq(col).text().toUpperCase();
    B = $(b).children('td').eq(col).text().toUpperCase();
  }
    if (order) {
      if (B < A) return -1;
      if (B > A) return 1;
    } else {
      if (A < B) return -1;
      if (A > B) return 1;
    }

    return 0;
  });

  $.each(rows, function(index, row) {
    $('#mytable').children('tbody').append(row);
  });
}

这是工作 fiddle http://jsfiddle.net/7jLvvp0n/2/

关于javascript - 实用地将日期字符串转换为 yyyy-mm-dd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39507521/

相关文章:

javascript - "0"分钟未出现在当前时间 (JavaScript/HTML)

jQuery 线索提示 : show/hide on mouseover and sticky on click

arrays - 在groovy中按字母顺序对字符串数组进行排序

c++ - 对象的 std::vector 和排序导致段错误

图像中的 JavaScript getAttribute() 方法

javascript - 在 Phonegap/iOS 中按下主页按钮时访问 localStorage

javascript - 在 JavaScript 中加载

jquery循环: return to the first slide

javascript - 绑定(bind)和解除绑定(bind)搞砸了我

java - 当用于比较对象的所选字段相等时,Java 如何决定对具有多个字段的对象列表进行排序?