【发布时间】:2012-07-12 03:52:30
【问题描述】:
因此,我正在使用此代码来帮助对表中的“日期”列进行排序:
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 年春季)的日期配合使用。另外,如果我有“未知”我希望它总是出现在最后。
有什么想法吗?我认为将季节与一个月类似是最简单的排序方法(例如 Spring=Mar、Summer=Jun、Autumn=Sep 和 Winter=Dec),但我不知道该怎么做。
谢谢!
附:我是新手 - 我有点理解后两个字符串在做什么,但第一个“monthYear-pre”是个谜。如果有人愿意解释,我会很高兴的。
【问题讨论】:
-
第一个是将“Jul 2012”转换为“01 Jul 2012”,将后者解析为日期,并对其进行排序。
-
但是你如何决定冬天是在夏天之前还是之后呢?大概是“2012 年 3 月”“2012 年 7 月”,然而 3 月和 12 月的部分时间都在冬季,而 7 月显然是夏季。
-
呵呵,说得好。我可能会单方面做出决定,将这一年分成四个:MarAprMay、JunJulAug、SepOctNov 和 DecJanFeb。使用这些组的第一个月将确定顺序(所以冬天在夏天之后)。我认为人们会应付!
-
您确实意识到,12 月只有大约 10 天的冬季,而 1-3 月大约有 80 天?但是,我在哪里(美国新英格兰南部),十二月感觉像冬天,三月感觉像春天。我只是想知道您的要求是否在这里得到了充分考虑。
-
嗯。该表列出了在活动中发表的论文/演讲。他们中的大多数人有一个月的时间,但有些人没有。其中一些被列为来自(例如)“2007 年秋季”中发生的一系列事件。我认为在这种情况下不需要高度的准确性,所以我很乐意接受我上面写的内容。无论如何,维基百科已经说过:“在英国,气象学家认为冬季是十二月、一月和二月三个最冷的月份”:p
标签: javascript sorting datatables