时间选择器setMonth问题

本文探讨了一款时间选择器在月份切换时遇到的问题,特别是在从3月切换到2月时的挑战。作者通过一个测试案例揭示了问题根源在于日期函数默认使用当前日期的天数,导致在2月(非闰年)无法正确切换。解决方法是将天数设置为1,确保了在任何月份都能顺利切换。

   最近做了一个时间选择器,刚做完的时候一切ok,但是今天却出现了一个问题。每当我按上一个月份时,它到3月时就会卡住,跳不过去。并且不是每个年份都会,而是有的年会,有的年不会。为了检查是不是我的时间选择器的其他地方出了问题,还是这段设置时间的代码出了问题。我新建了一个页面来测试,代码如下

    var changeTime={
        year:2015,
        month:9
    };
    var prev=document.getElementById('prev');
    var next=document.getElementById('next');
    prev.onclick=function(){
        var time=new Date();
        time.setFullYear(changeTime.year);
        time.setMonth(changeTime.month-1);
        changeTime.year=time.getFullYear();
        changeTime.month=time.getMonth();
        console.log(time.getFullYear()+'-'+time.getMonth());
    };

  结果跑到三月的时候还是卡住了。这是为什么呢?为什么到了三月就没办法切换到2月了。最后我发现是天数的原因。一年12个月里面,月份的天数一共有四种,分别是31,30,29,28。这就是问题所在了。我在运行这段代码的号数是29号.这也就造成了这个问题。定义一个时间函数,时间函数获取的是当天的时间。此时我这个时间函数的天数就是29。而2015年的2月只有28天,这也就是说定义2月的天数为29号时,它会自动换算成3月1号。这也就是为什么我一直都点不到2月去的原因了。后面我设置了天数为1之后,就没有这个问题了。

转载于:https://www.cnblogs.com/muyunren/articles/4919779.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值