这是另一个选项,更复杂,但您可以根据要求设置日期,并检查它是什么季节。
var getSeason = function() {
var self = this;
return function(date, o) {
if (date == 'getDefaults') return self.defaults;
if (date == 'setDefaults') self.defaults = $.extend(self.defaults, o);
date = typeof date == 'string' ? new Date(date) : date;
var year = date.getFullYear(),
arr = $.map(self.defaults, function(d, key) {
var dt = new Date(year, d.slice(0,2)-1, d.slice(3,5), 0,0,0,0);
dt.setDate(dt.getDate()-1); // subtract one to get the startdate right
return {season : key, start_date : dt};
}).sort(function(a, b) {
return a.start_date.getTime() > b.start_date.getTime() ? 1 : -1;
}),
season = arr[arr.length-1].season;
$.each(arr, function(idx, itm) {
if (date > itm.start_date && arr[idx+1] != undefined && date < arr[idx+1].start_date) {
season = itm.season;
return false;
}
});
return season;
}
}
getSeason.prototype.defaults = { // start dates, (month/date)
spring : '03/01',
summer : '05/20',
fall : '08/04',
winter : '10/10'
}
您初始化新赛季检查与new
,像这样:
var seasonChecker = new getSeason;
,然后用它来检查的季节,你可以传递一个有效的字符串或Date对象:
seasonChecker('03/20/14'); // returns "spring"
seasonChecker('03-20-14'); // returns "spring"
seasonChecker(new Date('Thu Mar 20 2014 00:00:00')); // returns "spring"
seasonChecker(new Date(1395270000000)); // returns "spring"
您可以通过以下方式获取默认日期:
seasonChecker('getDefaults');
或随时设置实例的默认日期:
seasonChecker('setDefaults', {
spring : '02/21',
summer : '03/22',
fall : '06/04',
winter : '11/01'
});
这里有一个示范
FIDDLE
什么日期格式你搞乱? –
@Pilot我试着只用一天一个月,所以dd/mm,但无法检查它是否大于或等于我设定的值。你会推荐哪个? –
如果你使用字符串,至少应该使用格式'mmdd',因为它的排序正确。 –