You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.4 KiB
JavaScript
82 lines
2.4 KiB
JavaScript
/**
|
|
* DataTables plug-in to handle U.S.-style dates. Requires month day year.
|
|
* Time is optional and can be in 12 or 24 hour formats.
|
|
* Properly parses mm/m, dd/d and yyyy/yy.
|
|
*
|
|
* Examples of readable formats:
|
|
* * 6/1/14 1:4 pm
|
|
* * 06/01/2014 01:04 PM
|
|
* * 6/1/2014 1:04 Pm
|
|
* * 06/01/2014 13:04
|
|
* * 06/01/2014
|
|
|
|
* Based on original datetime-us plugin by Kevin Gravier.
|
|
*
|
|
* @name Flexible US Datetime
|
|
* @summary Sort dates and times in US mm/dd/yyyy with optional time.
|
|
* @author Mark Stewart
|
|
*
|
|
* @example
|
|
* $('#example').dataTable( {
|
|
* columnDefs: [
|
|
* { type: 'datetime-us', targets: 0 }
|
|
* ]
|
|
* } );
|
|
*/
|
|
|
|
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
|
|
"datetime-us-pre": function ( a ) {
|
|
// Set optional items to zero
|
|
var hour = 0,
|
|
min = 0,
|
|
ap = 0;
|
|
|
|
// Execute match. Requires month, day, year. Can be mm/dd or m/d. Can be yy or yyyy
|
|
// Time is optional. am/pm is optional
|
|
var b = a.match(/(\d{1,2})\/(\d{1,2})\/(\d{2,4})( (\d{1,2}):(\d{1,2}))? ?(am|pm|AM|PM|Am|Pm)?/),
|
|
month = b[1],
|
|
day = b[2],
|
|
year = b[3];
|
|
// If time exists then output hours and minutes
|
|
if (b[4] != undefined) {
|
|
hour = b[5];
|
|
min = b[6];
|
|
}
|
|
// if using am/pm then change the hour to 24 hour format for sorting
|
|
if (b[7] != undefined) {
|
|
ap = b[7].toLowerCase();
|
|
if(hour == '12') hour = '0';
|
|
if(ap == 'pm') hour = parseInt(hour, 10)+12;
|
|
}
|
|
// for 2 digit years, changes to 20__ if less than 70
|
|
if(year.length == 2){
|
|
if(parseInt(year, 10) < 70) year = '20'+year;
|
|
else year = '19'+year;
|
|
}
|
|
// Converts single digits
|
|
if(month.length == 1) month = '0'+month;
|
|
if(day.length == 1) day = '0'+day;
|
|
if(hour.length == 1) hour = '0'+hour;
|
|
if(min.length == 1) min = '0'+min;
|
|
|
|
var tt = year+month+day+hour+min;
|
|
return tt;
|
|
},
|
|
"datetime-us-asc": function ( a, b ) {
|
|
return a - b;
|
|
},
|
|
"datetime-us-desc": function ( a, b ) {
|
|
return b - a;
|
|
}
|
|
});
|
|
|
|
jQuery.fn.dataTableExt.aTypes.unshift(
|
|
function (sData) {
|
|
if (sData !== null && sData.match(/(\d{1,2})\/(\d{1,2})\/(\d{2,4})( (\d{1,2}):(\d{1,2}))? ?(am|pm|AM|PM|Am|Pm)?/)) {
|
|
|
|
return 'datetime-us';
|
|
}
|
|
return null;
|
|
}
|
|
);
|