datetime

Convert date / time source data into one suitable for display

  • Author: Allan Jardine
  • Requires: DataTables 1.10+, Moment.js 1.7+

NOTE - As of DataTables 1.12, DataTables has a built in date / time renderer which should be used in place of this renderer. See the manual for details.

Date / time formats often from back from server APIs in a format that you don't wish to display to your end users (ISO8601 for example). This rendering helper can be used to transform any source date / time format into something which can be easily understood by your users when reading the table, and also by DataTables for sorting the table.

The MomentJS library is used to accomplish this and you simply need to tell it which format to transfer from, to and specify a locale if required.

This function should be used with the columns.render configuration option of DataTables.

It accepts one, two or three parameters:

  • DataTable.render.moment( to );
  • DataTable.render.moment( from, to );
  • DataTable.render.moment( from, to, locale );

Where:

  • to - the format that will be displayed to the end user
  • from - the format that is supplied in the data (the default is ISO8601 - YYYY-MM-DD)
  • locale - the locale which MomentJS should use - the default is en (English).

Use

This plug-in can be obtained and used in multiple different ways.

Browser

This plug-in is available on the DataTables CDN:

JS

The plug-in will then automatically register itself against a global DataTables instance. This file can also be used if you are using an AMD loader such as Require.js.

Note that if you are using multiple plug-ins, it can be beneficial in terms of performance to combine the plug-ins into a single file and host it on your own server, rather than making multiple requests to the DataTables CDN.

NPM

The plug-ins are all available on NPM (which can also be used with Yarn or any other Javascript package manager) as part of the datatables.net-plugins package. To use this plug-in, first install the plug-ins package:

npm install datatables.net-plugins

ES modules

Then, if you are using ES modules, import datatables.net, any other DataTables extensions you need, and the plug-in:

import DataTable from 'datatables.net';
import 'datatables.net-plugins/dataRender/datetime.mjs';

CommonJS

If you are using a CommonJS loader for Node (e.g. with older versions of Webpack, or non-module Node code) use the following method to require the plug-in:

var $ = require('jquery');
var DataTable = require('datatables.net');
require('datatables.net-plugins/dataRender/datetime.js');

Examples

// Convert ISO8601 dates into a simple human readable format
  $('#example').DataTable( {
    columnDefs: [ {
      targets: 1,
      render: DataTable.render.moment( 'Do MMM YYYY' )
    } ]
  } );
// Specify a source format - in this case a unix timestamp
  $('#example').DataTable( {
    columnDefs: [ {
      targets: 2,
      render: DataTable.render.moment( 'X', 'Do MMM YY' )
    } ]
  } );
// Specify a source format and locale
  $('#example').DataTable( {
    columnDefs: [ {
      targets: 2,
      render: DataTable.render.moment( 'YYYY/MM/DD', 'Do MMM YY', 'fr' )
    } ]
  } );

Version control

If you have any ideas for how this plug-in can be improved, or spot anything that is in error, it is available on GitHub and pull requests are very welcome!