2016-04-07 264 views
2

我使用jQuery DataTables插件和我的問題是,我的德國日期沒有得到正確排序。它具有以下格式:dd.mm.YYYY HH:iihjQuery DataTables插件:排序德國日期

這裏說到我的代碼:

的jsfiddle:

https://jsfiddle.net/uxaLn1e3/3/

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> 

JS(更新,才子^ h AJAX):

 $('#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日期的排序做工作?

+0

你可以試試這個[終極日期/時間排序插件](https://datatables.net/blog/2014-12-18) –

+0

我已經試過了。我在'$('#my-table').DataTable(...)'聲明之前加上'$ .fn.dataTable.moment('DD.MM.YYY HH:mm')'。我收到以下控制檯錯誤消息:'$ .fn.dataTable.moment不是函數' – Max

回答

3

添加data-sort屬性具有存儲在標準格式的日期td(我用ISO格式這裏即YYYY-MM-DDTHH:ii:ssZ):

<tr> 
    <td>1</td> 
    <td data-sort="2015-08-27T19:00:00Z">27.08.2015 19:00h</td> 
    <td>Carl</td> 
</tr> 
<tr> 
    <td>2</td> 
    <td data-sort="2016-02-10T14:00:00Z">10.02.2016 14:00h</td> 
    <td>Alan</td> 
</tr> 
<tr> 
    <td>3</td> 
    <td data-sort="2015-12-07T21:00:00Z">07.12.2015 21:00h</td> 
    <td>Bobby</td> 
</tr> 

現在datatables會考慮的,而不是td的HTML這個data-sort值對列進行排序。

Live Fiddle

即使你正在創建的表動態,你可以通過兩種方式實現:

A.添加data-sort屬性而產生的HTML。

B.在使用jQuery創建數據表之後添加data-sort,然後重新初始化數據表。

+1

您甚至可能想更進一步,使用沒有時區的裸時間戳值或使用UTC時間和用於排序的ISO-8601格式。 – tadman

+0

@tadman是的,也可以這樣做。 – void

+0

現在才注意到你正在使用祖魯時間,這是我推薦的一件事。 – tadman

0

我認爲你必須使用你的性別數據的腳本datetime格式的插件,或sortting您格式化過的時間插件(Ultimate date/time sorting plug-in是我的建議)

樣品上你的情況:jsfiddle.net/x92amfe4/4/