laravel - DataTables时刻按自定义格式排序

标签 laravel datatables momentjs

我正在使用 DataTables 和 moment,并且在我的表格上有自定义日期格式。 如何按时刻对列进行排序? 在这里您可以看到排序无法正常工作 updated_at 列。 我正在使用数据表时刻。 Update_at 格式已经被 Carbon on Model 改变了。 Here you can see column

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.css">


<div class="table-responsive">
  <table id="tickets-table" class="table table-bordered">
    <thead>
      <tr>
        <th>Name</th>
        <th>User name</th>
        <th>Last update</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>saddsfdsafdfsafsa</td>
        <td>Sqe Begush</td>
        <td>1 hour ago</td>
      </tr>
      <tr>
        <td>testing</td>
        <td>User name</td>
        <td>8 hours ago</td>
      </tr>
      <tr>
        <td>another</td>
        <td>another user</td>
        <td>4 days ago</td>
      </tr>
      <tr>
        <td>another testing</td>
        <td>user user</td>
        <td>1 week ago</td>
      </tr>
      <tr>
        <td>another testingsss</td>
        <td>user user11</td>
        <td>1 year ago</td>
      </tr>
      <tr>
        <td>another test</td>
        <td>user userqww11</td>
        <td>4 months ago</td>
      </tr>
    </tbody>
  </table>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js">
</script>
<script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script>
<script src="//cdn.datatables.net/plug-ins/1.10.12/sorting/datetime-moment.js"></script>
<script>
  $(document).ready(function() {
    //$.fn.dataTable.moment("YYYY/MM/DD");
    $('.table').DataTable();
  });
</script>

最佳答案

日期的来源尚不清楚。如果你通过 moment().fromNow()display 时,你自己就停止这样做类型是 sort (见下文)。如果您已经从源中获取了格式化的数据,您可以使用类似 chrono 的库,它可以将“人类日期”解析为“系统日期”:

var table = $('#tickets-table').DataTable({
  columnDefs: [
    { targets: 2,
      render: function(data, type) {
        if (type == 'sort') {
          var date = chrono.parseDate(data)
          return new Date(date).valueOf()
        } 
        return data
      }
    }
  ]
})  

使用 <table> 进行演示以上 -> http://jsfiddle.net/mw0c3f91/

关于laravel - DataTables时刻按自定义格式排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52533603/

相关文章:

javascript - 使用 javascript asp mvc 调用操作方法

jquery - 卡住表格上方的内容

javascript - 相对于日期范围的日期/时间格式

javascript - 使用 moment.js 进行日期/时间转换

mysql - 具有大量连接的 laravel 查询构建

php - Laravel 更新模型,具有唯一的属性验证规则

ios - 如何使用身份验证方法快速访问 Laravel API?

laravel - 使用 "envFrom"和 "configMapRef"(kustomize/kubernetes/laravel) 时,环境变量在 pod/容器中不可用

javascript - 如何获取 "j"的值以供在函数外部使用?

javascript - 如何在Polymer 2中的moment-js组件中每分钟更新一次时间?