<!DOCTYPE html>
<html>
  <head>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
    <link href="https://nightly.datatables.net/css/dataTables.dataTables.css" rel="stylesheet" type="text/css" />
    <script src="https://nightly.datatables.net/js/dataTables.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/2.3.1/luxon.min.js"></script>
    <meta charset=utf-8 />
    <title>DataTables - JS Bin</title>
  </head>
  <body>
    <div class="container">
      <table id="example1" class="display nowrap" width="100%">
        <thead>
          <tr>
            <th>Created</th>
            <th>Updated</th>
          </tr>
        </thead>
        <tfoot>
          <tr>
            <th>Created</th>
            <th>Updated</th>
          </tr>
        </tfoot>
      </table>
    </div>
  </body>
</html>
 
body {
  font: 90%/1.45em "Helvetica Neue", HelveticaNeue, Verdana, Arial, Helvetica, sans-serif;
  margin: 0;
  padding: 0;
  color: #333;
  background-color: #fff;
}
 
const DateTime = luxon.DateTime;
const data = [
  {
    id: 1,
    name: 'admin@oss',
    email: 'admin@oss',
    email_verified_at: null,
    enabled: 1,
    role: 2,
    theme: 'light',
    remember_token: null,
    created_at: '7 Dec 2024',
    updated_at: '7 Dec 2024',
  },
  {
    id: 2,
    name: 'Ava Evans',
    email: 'lily05@example.com',
    email_verified_at: null,
    enabled: 1,
    role: 8,
    theme: 'light',
    remember_token: null,
    created_at: '18 Dec 2024',
    updated_at: '18 Dec 2024',
  },
  {
    id: 3,
    name: 'Dale Gray',
    email: 'natasha14@example.org',
    email_verified_at: null,
    enabled: 1,
    role: 8,
    theme: 'light',
    remember_token: null,
  },
  {
    id: 4,
    name: 'Dale Gray',
    email: 'natasha14@example.org',
    email_verified_at: null,
    enabled: 1,
    role: 8,
    theme: 'light',
    remember_token: null,
    created_at: '9 Sep 2024',
    updated_at: '9 Sep 2024',
  },
];
  
$.fn.dataTable.ext.type.order['custom-date-pre'] = function (data) {
  console.log('Processing data in pre:', data);
  const format = 'd LLL yyyy';
  const date = DateTime.fromFormat(data, format);
  if (!date.isValid) {
    console.error('Invalid date:', data);
    return 0;
  }
  return date.toISODate();
};
$.fn.dataTable.ext.type.order['custom-date-null-pre'] = function (data) {
  console.log('Processing data in pre:', data);
  const format = 'd LLL yyyy';
  const date = DateTime.fromFormat(data, format);
  if (!date.isValid) {
    console.error('Invalid date:', data);
    return '';
  }
  return date.toISODate();
};
var table1 = new DataTable('#example1', {
  data: data,
  typeDetect: false,
  columns: [
    {
      data: 'created_at',
      type: 'custom-date',
      defaultContent: 'No date'
    },
    {
      data: 'updated_at',
      //type: 'custom-date-null',
      defaultContent: 'No date'
    }
  ]
  });
table1.ready(() => {
  console.log(table1.columns().types().toArray());
});
Output 300px

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers