2017-07-17 7 views
2

DOMのHTMLデータから初期化されたデータテーブル内の日付を並べ替えるにはどうすればよいですか?私の日付はepochのタイムスタンプで、私はmoment.jsを使って表示しています(例:2017年7月17日)。DataTables:エポック時刻による注文

私は注意しなければならないこと(ここで説明したよう:https://datatables.net/examples/advanced_init/html5-data-attributes.htmlデータ次またはデータがソート attrは動作しませんのいずれかを使用して

サンプルPHP:(これはへのループの一部でありますDBから返されたすべての行を収集 - 私は当時)ビューで$ member_returnの全体をエコー

$member_return .= '<tr><td>'.$user->email.'</td><td>'.$user->first_name.'</td><td>'.$label-stat.'</td><td>'.$label-sub.'</td><td>'.(int)$user->created_on.'</td><td>--</td></tr>'; 

サンプルHTML:

<tr> 
    <td>[email protected]</td> 
    <td>John2</td> 
    <td>Active</td> 
    <td>Active</td> 
    <td>1500317481</td> 
    <td>--</td> 
</tr> 
<tr> 
    <td>[email protected]</td> 
    <td>John2</td> 
    <td>Active</td> 
    <td>Active</td> 
    <td>1500317482</td> 
    <td>--</td> 
</tr> 
<tr> 
    <td>[email protected]</td> 
    <td>John3</td> 
    <td>Active</td> 
    <td>Active</td> 
    <td>1500317483</td> 
    <td>--</td> 
</tr> 

のjQuery:このメソッドを使用して

oTable = $('#view_members').DataTable({ 
    "columns": [ 
     { data: "email" }, 
     { data: "name" }, 
     { data: "status" }, 
     { data: "subscription" }, 
     { 
      data: "date", 
      type: "date", 
      render: function(data){ 
       return moment.unix(data).format("MMMM DD, YYYY") 
      } 
     }, 
     { "sortable": false } 
    ]  
}) 

、日付はその日、一例に基づいてソートされています:

July 17, 2017 
July 17, 2017 
July 16, 2017 
July 15, 2017 
June 14, 2017 
etc 

はしかし、私の問題は、そのソートではないということです時代によって上記のサンプルでは、​​最初の2つのレコードが両方とも2017年7月17日に作成されている場合がありますが、そのリストの2番目のレコードは実際にエポック時間に基づく最初のレコードになります(もう一度、サンプル)。

質問:エポックタイムスタンプでソートしながら、

がどのように私は、私の目的の形式(月日、年)で日付を表示することができますか?

+1

人間が読める時間を表示してからその列を並べ替えたい場合は、画面に書き込む時間を変換しているので不運に思えます。 しかし、エポック値を非表示の列に格納し、日付列をクリックしてその列をソートする方法を見つけることができます。それは醜いですが、うまくいくかもしれません。 – Difster

答えて

1
次のようにあなたの日付列の定義を変更し

{ 
    data: "date", 
    render: function(data, type, full, meta){ 
     if(type === "display"){ 
     data = moment.unix(data).format("MMMM DD, YYYY"); 
     } 

     return data; 
    } 
}  

をこれだけ表示目的のためにフォーマットされた日付を使用してソートを含むすべての他の目的のためにUnixの時間を使用するためにjQueryのDataTableのを伝えます。

関連する問題