使用jquery tablesorter排序日期的问题

我正在使用tablesorter插件在MVC .NET应用程序中对表进行排序。 我的大多数专栏都是字符串,我对它们没有任何问题。 没有数字的。 事情是我的日期时间列也被排序,好像它们是字符串。 它们的排序方式如下:01/04 / 2009,02 / 02 / 2009,300 / 08/2009等。我从该视图中的模型中获取数据。

我的电话是默认电话:

$("#table").tablesorter(); 

我试着没有运气指定dateformat:

 $("#table").tablesorter({ dateFormat: 'dd/mm/yyyy'}); 

当我手动键入具有随机日期的静态表时,会发生奇怪的事情。 它被排序了! 但是我的数据来自数据库调用并被放入模型中,然后我通过它来编写数据并写入tr。

提前致谢。

编辑:这可能与我创建tr的方式有关吗?

      ... ... ...   

尝试将Tablesorter解析器添加到日期列。 Tablesorter附带了shortDate,usLongDate和isoDate的解析器。

 $("#table").tablesorter({ headers: { colNum: { sorter: 'shortDate'} } }); 

其中colNum是包含日期的列。 我在tablesorter网站上找到的唯一例子就在这里 。 如果tablesorter也将数字排序错误,这也有效。 还有其他解析器,包括百分比,IP地址等。 仔细看看源代码的末尾,它们将被列在那里。

编辑:在查看源代码时,dateFormat选项似乎只查找“us”,“uk”,“dd / mm / yy”或“dd-mm-yy”。 当你尝试“英国”时会发生什么?

我遇到了同样的问题,我添加了一个名为datetime的自定义解析器:

 $.tablesorter.addParser({ id: "datetime", is: function(s) { return false; }, format: function(s,table) { s = s.replace(/\-/g,"/"); s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1"); return $.tablesorter.formatFloat(new Date(s).getTime()); }, type: "numeric" }); 

然后,您只需将该格式应用于所需的列,就像Gabe G公开的那样(例如,要将此分类器分配给第一列,您应该执行以下操作:

 $("#mytable").tablesorter( { dateFormat: 'dd/mm/yyyy', headers: { 0:{sorter:'datetime'} } } ); 

您还可以在日期之前以数字格式(yyyymmdd)添加隐藏的span标记。 此文本将首先出现并用于排序,但它将隐藏在视线之外,仅显示您想要的格式。

  2013092323 September 2013 

存在jquery tablesorter插件的更新。

根据应用程序的区域设置,您可以按此更新对日期进行排序。

您可以按照以下链接查看tablesorter的更新。

http://tablesorter.openwerk.de/

使用方便:

 dateFormat:'mm/dd/yyyy hh:mm:ss' 

说实话,对我来说最简单的解决方案是,正如compsmart所说,在实际日期之前添加一些隐藏文本。

我喜欢compsmart的KISS解决方案!

http://mottie.github.io/tablesorter/docs/

设置日期格式。 以下是可用选项。 (修改版v2.0.23)。

  • “mmddyyyy”(默认)
  • “DDMMYYYY”
  • “年月日”

在以前的版本中,此选项设置为“us”,“uk”或“dd / mm / yy”。 修改此选项以更好地适应所需的日期格式。 它只适用于四位数年份!

分拣机应设置为“shortDate”,日期格式可以在“dateFormat”选项中设置,也可以设置为“headers”选项中的特定列。 请参阅演示页面以查看其是否有效。

 $(function(){ $("table").tablesorter({ dateFormat : "mmddyyyy", // default date format // or to change the format for specific columns, // add the dateFormat to the headers option: headers: { 0: { sorter: "shortDate" }, // "shortDate" with the default dateFormat above 1: { sorter: "shortDate", dateFormat: "ddmmyyyy" }, // day first format 2: { sorter: "shortDate", dateFormat: "yyyymmdd" } // year first format } }); }); 

可以通过添加以下内容来修改各个列(它们都做同样的事情),按优先级顺序设置(修改后的v2.3.1):

  • jQuery data data-dateFormat =“mmddyyyy”。
  • metadata class =“{dateFormat:’mmddyyyy’}”。 这需要元数据插件。
  • headers选项标题:{0:{dateFormat:’mmddyyyy’}}。
  • header class name class =“dateFormat-mmddyyyy”。 整体dateFormat选项。

就我而言,我已经习惯了

 $("#myTable").tablesorter({dateFormat: "uk"}) 

对于版本。