2014-01-08 35 views
1

好的,我理解这个的基础知识,但我试图设置一段代码,允许我使用jQuery的'.html'或'.append'函数插入HTML。基于日期插入代码

我已经单独管理了这一点,但我必须在季节中插入代码 - 这里稍微再说一点:我需要在夏季包含一段代码,一个用于冬季,春季等上。

现在,我知道如何获取当前日期,并且我知道如何使用IF语句,但我一直停留在日期的格式上,以便我可以比较它以设置季节日期,然后获得函数为每个运行。

万一有人需要他们在这里有一些例子,当然是不准确的:

  • 冬季:一月
  • 春季:三月至六月
  • 夏季:六月至十一月
  • 秋季:十一月

月如果有人能够给我这样的一个例子,我将非常感激。 (我也想不出如何为季节的开始和结束添加更多的具体日期,因为一些月份有更少/更多的日子......并且还有诸如圣诞节和万圣节之类的事件)

+0

什么日期格式你搞乱? –

+0

@Pilot我试着只用一天一个月,所以dd/mm,但无法检查它是否大于或等于我设定的值。你会推荐哪个? –

+0

如果你使用字符串,至少应该使用格式'mmdd',因为它的排序正确。 –

回答

4
var date = new Date(), 
    month = date.getMonth(), 
    date = date.getDate()m 
    season; 


if(month <= 2 && date <= 20) { // Up to 20th March 
    season = "Winter"; 
} else if(month <= 5 && date <= 5) { // Up to 5th June 
    season = "Spring"; 
} // etc 


$("#myDiv").html("It is " + season); 

更新了最新例子

+0

感谢您的回答!我现在会玩一玩,你能想出办法做更具体的日期,也许也会用日子吗? –

+0

@ Lighty_46更新 – paulslater19

4

请勿使用字符串日期,请使用Date object。它可以在当前月份,它允许你,告诉你:

var month = new Date().getMonth(); 
if(month >= 0 && month <= 2) { // Jan ... March 
} ... 

注意内开始用0(==一月)到11(==十二月)

+0

感谢您的回答,我现在就来玩一玩吧,您能想出办法做更具体的日期,也许还会用日子吗? –

+1

我建议你阅读我链接到的文档。日期对象有很多方法可以给你年,日,时,分和秒。 –

1

这是另一个选项,更复杂,但您可以根据要求设置日期,并检查它是什么季节。

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

+0

感谢您的回复!幸运的是,我的客户很高兴能够在一个月内做到这一点,但如果有类似的事情再次发生,我肯定会使用它。 –