DataTables:按纪元时间排序

时间:2017-07-17 19:35:53

标签: php jquery sorting datatables

如何对数据表中的日期进行排序,这是从DOM中的HTML数据初始化的?我的日期是纪元时间戳,我使用moment.js按需显示(例如:2017年7月17日)。

我应该注意,使用数据顺序数据排序 attr不起作用(如下所述:https://datatables.net/examples/advanced_init/html5-data-attributes.html

示例PHP:(这是从数据库中收集所有返回行的循环的一部分 - 然后在视图中回显整个$ 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>fake1@email.com</td>
    <td>John2</td>
    <td>Active</td>
    <td>Active</td>
    <td>1500317481</td>
    <td>--</td>
</tr>
<tr>
    <td>fake2@email.com</td>
    <td>John2</td>
    <td>Active</td>
    <td>Active</td>
    <td>1500317482</td>
    <td>--</td>
</tr>
<tr>
    <td>fake3@email.com</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

但是,我的问题是它没有按时代排序。在上面的示例中,虽然前两个记录可能都是在2017年7月17日创建的,但该列表中的第二个记录实际上应该是第一个基于纪元时间的记录(同样,这是样本 )。

问题:

如何按照纪元时间戳排序,以我想要的格式(月日,年)显示日期?

1 个答案:

答案 0 :(得分:1)

更改日期列定义,如下所示:

<Grid>
    <CaptureElement Name="PreviewControl" Stretch="Uniform" Height="400" Width="400" >
    </CaptureElement>
    <Image Source="head.png" Height="400" Width="400" />
</Grid>

这告诉jQuery DataTables仅将格式化日期用于显示目的,并将Unix时间用于所有其他目的,包括排序。