我有一个正在使用的数据表,它有 5 列 ( http://datatables.net/ )
列是
- 日期格式:1 月 5 日
- 时间格式为:10:31 AM (xx:xx XX)
- 第 3、4、5 列并不重要,它们只是我不关心排序的数据,只要 1 和 2 正确即可。
我想先按日期排序(最近的),然后我想按时间排序(最近的在顶部)。
因此,1 月 5 日下午 4:58 应该在凌晨 4:58 之前显示,显然所有其他数字也需要在所有其他时间正常工作。格式始终相同,即:12:34 AM、4:15 PM、12:00 AM 等。
就日期而言,这已经很完美了。数据表中最多只有 2 天的数据,因此即使它滚动到该月的第一天,它仍然会显示在顶部,这很好。我查看了文档,但对如何对我的时间列进行正确排序感到困惑。
这是我的代码:
oTable = $('#posts').dataTable({
"bSort": true,
"aaSorting": [ [0,'desc'], [1,'asc'] ],
"aoColumns": [
null,
{ "sType": 'time-sort' },
null,
null,
null
]
});
来自这里:http://datatables.net/release-datatables/examples/basic_init/multi_col_sort.html
我现在必须使用“aoColumns”的 sType 属性为时间构建某种自定义排序算法(您可以在上面的示例链接中看到它,他区分大小写),我不知道如何这样做 :( 到目前为止,我什至不确定我这样做是否正确。它似乎对两列进行了很好的排序,但现在我需要这样做,以便时间合适......
这是我认为我需要的代码的另一部分。 (再一次,这是来自示例)。我 99% 确定这是我需要为升序和降序输入自定义时间排序代码的地方。
/* Define two custom functions (asc and desc) for time sorting */
jQuery.fn.dataTableExt.oSort['time-sort-asc'] = function(x,y) {
return ???;
};
jQuery.fn.dataTableExt.oSort['time-sort-desc'] = function(x,y) {
return ???
};
最佳答案
您可以通过将输入字符串中的时间解析为日期对象然后比较日期对象来执行此操作:
此处的工作演示:http://live.datatables.net/erefom/2/edit#preview
此处来源:http://live.datatables.net/erefom/2/edit
另请参阅此答案:What is the best way to parse a time into a Date object from user input in Javascript?
关于javascript - 如何按时间排序(格式 : 5:40 PM) in javascript for use with DataTables?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8752172/