JavaScript按日期范围移除类需求:需限定为2月1日至4月15日
修改JavaScript日期判断逻辑:精准匹配2月1日至4月15日
原来的代码只基于月份做判断,要缩小到2月1日至4月15日这个精确范围,我们需要直接操作Date对象来做日期区间比较,这样能覆盖所有边界情况(比如4月16日就不再触发淡季逻辑)。
修改后的完整代码
<script type="text/javascript"> jQuery(document).ready(function(){ // 获取当前的完整日期对象 const currentDate = new Date(); // 构造区间起始日期:当年的2月1日(注意JS月份是0索引,2月对应1) const startOfOffSeason = new Date(currentDate.getFullYear(), 1, 1); // 构造区间结束日期:当年的4月15日(4月对应3) const endOfOffSeason = new Date(currentDate.getFullYear(), 3, 15); // 判断当前日期是否落在淡季区间内(包含首尾两天) if (currentDate >= startOfOffSeason && currentDate <= endOfOffSeason) { jQuery('.off-season-hours .mbhi-is-current').removeClass('mbhi-is-current'); } else { jQuery('.on-season-hours .mbhi-is-current').removeClass('mbhi-is-current'); } }); </script>
关键修改点说明
- 精确日期比较:直接用
Date对象做>=、<=判断,内部会自动转换为时间戳(从1970年开始的毫秒数),比手动拆分年/月/日判断更简洁可靠。 - 0-based月份处理:JavaScript里
getMonth()返回0-11(0=1月,1=2月...),所以构造2月1日时要传1,4月15日传3。 - 年份自适应:用
currentDate.getFullYear()获取当前年份,避免跨年时出现逻辑错误(比如12月不会错误匹配下一年的2月)。
额外注意事项
如果你的网站面向跨时区用户,需要统一用UTC时间的话,可以把Date对象换成UTC方法,比如new Date(Date.UTC(currentDate.getFullYear(), 1, 1)),这样所有用户的判断基准都是UTC时间,不会因为本地时区差异出现偏差。
内容的提问来源于stack exchange,提问作者Anna H.
相关产品推荐
相关产品推荐

