Javascript jquerydatatables插件:对德语日期排序
我使用jQueryDataTables插件,我的问题是我的德语日期没有正确排序。它的格式如下:Javascript jquerydatatables插件:对德语日期排序,javascript,jquery,date,datatables,Javascript,Jquery,Date,Datatables,我使用jQueryDataTables插件,我的问题是我的德语日期没有正确排序。它的格式如下:dd.mm.YYYY HH:iih 下面是我的代码: JSFIDDLE: <table id="my-table"> <thead> <th>Nr. </th> <th>Date</th> <th>Name</th> </thead>
dd.mm.YYYY HH:iih
下面是我的代码:
JSFIDDLE:
<table id="my-table">
<thead>
<th>Nr. </th>
<th>Date</th>
<th>Name</th>
</thead>
<tr>
<td>1</td>
<td>27.08.2015 19:00h</td>
<td>Carl</td>
</tr>
<tr>
<td>2</td>
<td>10.02.2016 14:00h</td>
<td>Alan</td>
</tr>
<tr>
<td>3</td>
<td>07.12.2015 21:00h</td>
<td>Bobby</td>
</tr>
</table>
$('#my-table').DataTable({
"ajax": 'my_url',
"columns": [
{"data": "nr"},
{"data": "date"},
{"data": "name"}
],
"autoWidth": false,
"order": [],
"fnCreatedRow": function( nRow, aData, iDataIndex ) {
var dateFull = aData.date;
var dateFullItems = dateFull.split(' ');
var dateDatum = dateFullItems[0];
var dateDatumItems = dateDatum.split('.');
var dateTime = dateFullItems[1];
var dateFormat = dateDatumItems[2] + '-' + dateDatumItems[1] + '-' + dateDatumItems[0] + 'T' + dateTime + ':00Z';
$(nRow).find('td:nth-of-type(2)').attr('data-sort', dateFormat);
},
});
HTML:
<table id="my-table">
<thead>
<th>Nr. </th>
<th>Date</th>
<th>Name</th>
</thead>
<tr>
<td>1</td>
<td>27.08.2015 19:00h</td>
<td>Carl</td>
</tr>
<tr>
<td>2</td>
<td>10.02.2016 14:00h</td>
<td>Alan</td>
</tr>
<tr>
<td>3</td>
<td>07.12.2015 21:00h</td>
<td>Bobby</td>
</tr>
</table>
$('#my-table').DataTable({
"ajax": 'my_url',
"columns": [
{"data": "nr"},
{"data": "date"},
{"data": "name"}
],
"autoWidth": false,
"order": [],
"fnCreatedRow": function( nRow, aData, iDataIndex ) {
var dateFull = aData.date;
var dateFullItems = dateFull.split(' ');
var dateDatum = dateFullItems[0];
var dateDatumItems = dateDatum.split('.');
var dateTime = dateFullItems[1];
var dateFormat = dateDatumItems[2] + '-' + dateDatumItems[1] + '-' + dateDatumItems[0] + 'T' + dateTime + ':00Z';
$(nRow).find('td:nth-of-type(2)').attr('data-sort', dateFormat);
},
});
在我的JS中,我需要做哪些调整来对工作日期进行排序?向
td
添加数据排序属性,以标准格式存储日期(我在这里使用了ISO格式,即YYYY-MM-DDTHH:ii:ssZ
):
1.
2015年8月27日19:00
卡尔
2.
2016年2月10日14:00
艾伦
3.
2015年12月7日21:00
鲍比
<>现在>代码>数据项< /代码>将考虑此代码>数据排序< /代码>值,而不是HTML >代码> TD < /代码>对列进行排序。
即使动态创建表,也可以通过两种方式实现:
A.在生成html时添加数据排序
属性
B.在使用jQuery创建数据表后,添加一个数据排序
,然后重新输入数据表。我认为您必须为性别数据脚本使用日期时间格式插件,或者为格式化日期时间排序插件(我推荐)
示例:jsfiddle.net/x92amfe4/4/您可以通过从字符串生成JavaScript日期对象来对日期进行排序。
然后,您只需将德语日期(“dd.mm.yy”)拆分并创建一个新日期:
new Date(date.split('.')[2], date.split('.')[1]-1, date.split('.')[0])
对于德国日期的排序:
dates.sort((a, b) => {
return new Date(b.split('.')[2], b.split('.')[1]-1, b.split('.')[0]) - new Date(a.split('.')[2], a.split('.')[1]-1, a.split('.')[0])
});
注:
您可以使用任何日期格式创建JavaScript日期对象
new Date(year, month(0-11) [, day [, hour [, minutes [, seconds [, milliseconds]]]]]);
你可以试试这个,我已经试过了。我将$.fn.dataTable.moment('DD.MM.YYY HH:MM')
放在我的$('#我的表').dataTable(…)声明之前。我收到以下控制台错误消息:$.fn.dataTable.矩不是函数
您甚至可能想更进一步,使用没有时区的裸时间戳值,或者使用UTC时间和ISO-8601格式进行排序。刚刚注意到,现在您正在使用祖鲁时间,这是我推荐的一件事。功能不错。另请参见此@void:Thank you。实际上,我确实使用ajax加载数据<代码>“ajax”:“{url('my_url',{idUser':''}}}}}+id,“columns”:[{“data”:“nr”},{“data”:“date”},{“data”:“name”}]
我不明白如何在这个上下文中添加带有日期的数据排序属性。你能解释一下吗?我刚更新了我的帖子。如何将数据排序解决方案集成到更新的代码中?