所以,我正在使用此代码来帮助对表格中的“日期”列进行排序:
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"monthYear-pre": function ( a ) {
return new Date('01 '+a);
},
"monthYear-asc": function ( a, b ) {
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},
"monthYear-desc": function ( a, b ) {
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
}
} );
它适用于诸如“2012年7月”之类的日期,但它不会与仅有一年的日期(例如“2004”或有季节(例如2008年春季))合作。而且,如果我有“未知“我希望它总能出现在最后。
有什么想法吗?我认为使季节类似于一个月将是最简单的排序方式(例如春天=三月,夏天=六月,秋天=九月和冬天=十二月),但我不知道该怎么做。
谢谢!
P.S。我是新手 - 我有点理解后两个字符串在做什么,但第一个“monthYear-pre”是个谜。如果有人想解释那么我会很激动。
答案 0 :(得分:0)
"seasonYear-pre": (function() {
var seasons = /\s*(winter|spring|summer|fall|autumn),?\s*(\d{4})\s*/,
matchedMonths = {winter: '02-01', spring: '05-01',
summer: '08-01', fall: '11-01', autumn: '11-01'}
return function(a) {
var match = seasons.exec(a.toLowerCase());
return new Date(match[2] + "-" + matchedMonths[match[1]]);
};
})();
这将在今年年初安排冬季,但您可以根据需要更改上面列表中的规范日期。它匹配像“Winter 2012”或“Autumn,2007”这样的字符串。 (逗号是可选的,它不区分大小写。)我不知道这个表分类器API。我将其设置为“monthYear-pre”,但如果它需要一个简单的排序方法,那么很容易改变。