From 2505b9b6f1e6cc37977980cff4cf8116db7b27a3 Mon Sep 17 00:00:00 2001 From: Allan Jardine Date: Thu, 20 Dec 2012 16:50:58 +0000 Subject: [PATCH] sorting - New US formatted date / time sorting plug-in from Kevin Gravier --- sorting/datetime-us.js | 59 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 sorting/datetime-us.js diff --git a/sorting/datetime-us.js b/sorting/datetime-us.js new file mode 100644 index 0000000..0627fc5 --- /dev/null +++ b/sorting/datetime-us.js @@ -0,0 +1,59 @@ +/* + * Adds a new sorting option to dataTables called datetime-us. Also + * includes a type detection plug-in. Matches and sorts date / time strings in + * the format: (m)m/(d)d/(yy)yy (h)h/m(m) (am|pm). For example: + * + * + * @name Date / time - US + * @anchor datetime_us + * @author Kevin Gravier +*/ +jQuery.extend( jQuery.fn.dataTableExt.oSort, { + "datetime-us-pre": function ( a ) { + 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], + hour = b[4], + min = b[5], + ap = b[6]; + + if(hour == '12') hour = '0'; + if(ap == 'pm') hour = parseInt(hour, 10)+12; + + if(year.length == 2){ + if(parseInt(year, 10)<70) year = '20'+year; + else year = '19'+year; + } + 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; + } +);