jQuery tablesorterを使用して、次の形式で日付列を並べ替えたいと思います。18:44:12 17/06/2012
どのようにアイデアはありますか?
jQuery tablesorterを使用して、次の形式で日付列を並べ替えたいと思います。18:44:12 17/06/2012
どのようにアイデアはありますか?
tablesorter2.0でも同じ問題が発生します。日付dd/mm/yyが982行目で間違っています。
s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$1/$2/$3");
間違っている、正しいは
s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$3/$2/$1");
私のts.addParser({id: "shortDate" ...は:
ts.addParser({
id: "shortDate",
is: function (s) {
return /\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);
}, format: function (s, table) {
var c = table.config;
s = s.replace(/\-/g, "/");
if (c.dateFormat == "us") {
// reformat the string in ISO format
s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$1/$2");
} else if (c.dateFormat == "uk") {
// reformat the string in ISO format
s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1");
} else if (c.dateFormat == "dd/mm/yy" || c.dateFormat == "dd-mm-yy") {
s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/, "$3/$2/$1");
} else if (c.dateFormat == "dd/mm/yyyy" || c.dateFormat == "dd-mm-yyyy") {
s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1");
}
return $.tablesorter.formatFloat(new Date(s).getTime());
}, type: "numeric"
});
dd / mm/yyyyのケースを追加しました。日付については、私は知りません... :(
パラメータとしてdateFormat: "dd / mm/yyyy"を入力する必要があります。
最初の問題は、日付テキストをjavascriptDate object
が認識できる形式に解析することです。日付に変換されると、プラグインは日付を数値ソートタイプとして扱います。これがあなたのフォーマットのための実用的なパーサーです。
デモ:http://jsfiddle.net/H9u7C/1/
$.tablesorter.addParser({
// set a unique id
id: 'changeToDate',
is: function(s) {
// return false so this parser is not auto detected
return false;
},
format: function(s) {
var a = $.trim(s).split(' ');
var time = a[0];
var dateParts = a[1].split('/');
var dateText = [dateParts[1], dateParts[0], dateParts[2]].join('/') + ' ' + time;
var dateObj = new Date(dateText);
return dateObj;
},
type: 'numeric'
});
使用法は、プラグインサイトのカスタムパーサーデモで概説されているとおりです