75 lines
1.8 KiB
JavaScript
75 lines
1.8 KiB
JavaScript
|
/*! Two digit year parser
|
||
|
* Demo: http://jsfiddle.net/Mottie/abkNM/427/
|
||
|
*/
|
||
|
/*jshint jquery:true */
|
||
|
;(function($){
|
||
|
"use strict";
|
||
|
|
||
|
var ts = $.tablesorter,
|
||
|
|
||
|
// Make the date be within +/- range of the 2 digit year
|
||
|
// so if the current year is 2020, and the 2 digit year is 80 (2080 - 2020 > 50), it becomes 1980
|
||
|
// if the 2 digit year is 50 (2050 - 2020 < 50), then it becomes 2050.
|
||
|
range = 50;
|
||
|
|
||
|
ts.dates = $.extend({}, ts.dates, {
|
||
|
regxxxxyy: /(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{2})/,
|
||
|
regyyxxxx: /(\d{2})[\/\s](\d{1,2})[\/\s](\d{1,2})/
|
||
|
});
|
||
|
|
||
|
ts.formatDate = function(s, regex, format, table){
|
||
|
var n = s
|
||
|
// replace separators
|
||
|
.replace(/\s+/g," ").replace(/[-.,]/g, "/")
|
||
|
// reformat xx/xx/xx to mm/dd/19yy;
|
||
|
.replace(regex, format),
|
||
|
d = new Date(n),
|
||
|
y = d.getFullYear(),
|
||
|
rng = table && table.config.dateRange || range,
|
||
|
now = new Date().getFullYear();
|
||
|
// if date > 50 years old (set range), add 100 years
|
||
|
// this will work when people start using "50" and mean "2050"
|
||
|
while (now - y > rng) {
|
||
|
y += 100;
|
||
|
}
|
||
|
return d.setFullYear(y) || s;
|
||
|
};
|
||
|
|
||
|
$.tablesorter.addParser({
|
||
|
id: "ddmmyy",
|
||
|
is: function() {
|
||
|
return false;
|
||
|
},
|
||
|
format: function(s, table) {
|
||
|
// reformat dd/mm/yy to mm/dd/19yy;
|
||
|
return ts.formatDate(s, ts.dates.regxxxxyy, "$2/$1/19$3", table);
|
||
|
},
|
||
|
type: "numeric"
|
||
|
});
|
||
|
|
||
|
$.tablesorter.addParser({
|
||
|
id: "mmddyy",
|
||
|
is: function() {
|
||
|
return false;
|
||
|
},
|
||
|
format: function(s, table) {
|
||
|
// reformat mm/dd/yy to mm/dd/19yy
|
||
|
return ts.formatDate(s, ts.dates.regxxxxyy, "$1/$2/19$3", table);
|
||
|
},
|
||
|
type: "numeric"
|
||
|
});
|
||
|
|
||
|
$.tablesorter.addParser({
|
||
|
id: "yymmdd",
|
||
|
is: function() {
|
||
|
return false;
|
||
|
},
|
||
|
format: function(s, table) {
|
||
|
// reformat yy/mm/dd to mm/dd/19yy
|
||
|
return ts.formatDate(s, ts.dates.regyyxxxx, "$2/$3/19$1", table);
|
||
|
},
|
||
|
type: "numeric"
|
||
|
});
|
||
|
|
||
|
})(jQuery);
|