我目前使用Tablesorter(一个jQuery插件)对表进行排序。我试图用yyyy MMM dd格式对日期进行排序,但似乎我无法做到这一点。我需要说我的日期输入是法语,如下:
我尝试了很多东西,但它没有按照正确的方式排序。我不知道这是因为我的日期输入还是用法语或其他什么,但是我将要放弃它。
这是我使用的代码
$.tablesorter.addParser({
id: "date",
is: function (s) {
return false;
},
format: function (s, table) {
var date = s.split(' ');
var month = translateMonth(date[1]);
var d = new Date(date[0], month, date[2]);
console.log(d.toString());
return d.getTime();
},
type: "numeric"
});
并且
$("#table").tablesorter({
headers: {
2: {
sorter: 'date'
}
}
});
和
function translateMonth(month) {
switch (month) {
case "janv.": return 0;
case "févr.": return 1;
case "mars": return 2;
case "avril": return 3;
case "mai": return 4;
case "juin": return 5;
case "juil": return 6;
case "août.": return 7;
case "sept.": return 8;
case "oct.": return 9;
case "nov.": return 10;
case "déc.": return 11;
default: return -1;
}
}
我的年和天 正确排序但问题是我的月份
我很感激任何帮助
谢谢 - S
答案 0 :(得分:2)
你是对的,它不知道这些月份缩写是什么。有一些日期库可以支持这种事情,例如moment.js,如果你能够使用jquery,这是一个很好的工具。如果没有,那么只需将缩写转换为适当的月份数字。
function translateMonth(month)
{
switch (month)
{
case 'janv.': return 0;
case 'févr.': return 1;
case 'févr.': return 2;
case 'mars': return 3;
case 'avril': return 4;
case 'mai': return 5;
case 'juin': return 6;
case 'juil.': return 7;
case 'août': return 8;
case 'oct.': return 9;
case 'nov.': return 10;
case 'déc.': return 11;
default: return -1;
}
}
$.tablesorter.addParser({
id: "customParser",
is: function (s) {
return false;
},
format: function (s) {
var date = s.split(' '),
month = translateMonth(date[1]);
if(month >= 0)
return new Date(date[0], month ,date[2]).getTime();
else
return new Date().getTime();
},
type: 'numeric'
});
答案 1 :(得分:0)
好吧,我找到了。我的javascript文件没有更新。其次,我使用我的单元格属性来获得传统日期。是的..这里真正的问题是,我必须处理可折叠的行。
我的代码:
$(function () {
$.tablesorter.addParser({
id: "date",
is: function (s) {
return false;
},
type: "text",
format: function (s, table, cell, cellIndex) {
var tr = $(cell).parent("tr");
var date = tr.data("date");
var id = tr.data("id");
var ind = tr.data("ind");
return date + " " + id + " " + ind;
}
});
$("table").tablesorter({
headers: { 2: { sorter: "date" }
},
sortList: [[1, 0]],
widgets: ['group', 'filter'],
widgetOptions: {
group_collapsible: true,
group_collapsed: false,
group_count: false,
filter_childRows: false,
}
});
});
$(".open-supp").click(function (e) {
var detail = $(this).closest("tr").next("tr.supp");
$("tr.supp").not(supp).hide();
detail.toggle("fast");
e.preventDefault();
});
谢谢