用于MM.DD.YYYY HH:MI AM格式的日期时间的jQuery tablesorter解析器

我有一个4列表,其中第二列是日期列,格式为“mm.dd.yyyy hh:mi am”。 默认的tablesorter没有按日期列正确排序。 我必须在tablesorter中编写自己的解析器,但它仍然不适合我。 我不确定使用的正则表达式是否正确,是否有人可以在下面的代码中指出我的错误? 我很感激你的帮助。

ts.addParser( { id: "srsDate", is: function (s) { return /\d{1,2}\.\d{1,2}\.\d{1,4} \d{1,2}:\d{1,2}\s(am|pm)/.test(s); }, format: function (s) { s = s.replace(/\./g, " "); s = s.replace(/\:/g, " "); s = s.replace("am", "0"); s = s.replace("pm", "1"); s = s.split(" "); return $.tablesorter.formatFloat(new Date(s[0], s[1], s[2], s[3], s[4], s[5]).getTime() + parseInt(s[6])); }, type: "numeric" }); 

我称之为:

 myapp.Sort = function () { $(myapp.config.tblHistory).tablesorter({ headers: { 1: { sorter: 'srsDate'} }, sortList: [[0, 0]] }); } 

我引用了: 使用Jquery Tablesorter进行日期排序问题来构建新的解析器。 排序的结果不起作用。 它根本不对数据进行排序。

我自己不使用tablesorter,但是你考虑过使用Date.parse(datestring)吗?

那么你的function就是:

 ts.addParser({ id: "srsDate", is: function (s) { return /\d{1,2}\.\d{1,2}\.\d{1,4} \d{1,2}:\d{1,2}\s(am|pm)/.test(s); }, format: function (s) { return Date.parse(s); }, type: "numeric" }); 

这将以Unix时间戳返回该日期,以毫秒为单位。

如果要将其作为秒数返回, Date.parse(s)的结果简单地除以1000:

 function: function (s) { return (Date.parse(s) / 1000); } 

虽然如果您只是对数据进行排序,这两种方法都可以。