开发者社区> 问答> 正文

JS求当前日期后N天。IE环境下出现NaN

目前的写法

    function setTime(duration){
        var bTime = $('#startTime').val();
        if(bTime==''){
            alert('请输入开始时间');
            return;
        }else{
              var later = new Date(bTime);
              later.setDate(later.getDate()+parseInt(duration));
              return later.Format("yyyy-MM-dd hh:mm:ss"); 
        }
    }

该方法在IE下出现NaN,搜索未果。望老手帮助。

展开
收起
云栖技术 2016-05-25 09:38:15 1960 0
1 条回答
写回答
取消 提交回答
  • 社区爱好者,专为云栖社区服务!

    Q群里聊过了。主要是你的$('#startTime')文本格式问题。

    然后我才记起原来解析时间格式上浏览器有的格式是不支持的。

    这里解释一下你的思路,首先,你的需求是对 2014-10-01 10:00这样的字符串做解析成时间。

    所以,针对这种格式,首先是 ie 对 new Date('2014-10-01')会得到NaN.

    因此我们大可改成浏览器都喜欢的格式,比如 10/01/2014
    这样,new Date('10/01/2014')就是你要的日期了,但是这里还有个小时和分的具体时间,
    那么由上面new到的Date,假设赋给了 meDate,那么可以用meDate.setHours(hour, minute)

    所以改后的代码应该差不多这样:

    function setTime(duration){
            var bTime = $('#startTime').val();
            if(bTime==''){
                alert('请输入开始时间');
                return;
            }else{
                 var timePar = bTime.split(' ');
                 var timeDate = timePar[0].split('-');
                 bTime = timeDate[1]+'/'+timeDate[2]+'/'+timeDate[0];
                  var later = new Date(bTime);
                  var timeHour = timePar[1].split(':');
                  later.setHours(timeHour[0], timeHour[1]);
                  later.setDate(later.getDate()+parseInt(duration));
                  return later.Format("yyyy-MM-dd hh:mm:ss"); 
            }
        }

    最后,我提一下,以后涉及到时间,留意一下new Date(str)中str的格式问题哟。

    2019-07-17 19:13:28
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript异步编程 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载