javascript - JS求当前日期后N天。IE环境下出现NaN
迷茫
迷茫 2017-04-10 14:31:52
[JavaScript讨论组]

目前的写法

    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,搜索未果。望老手帮助。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(3)
高洛峰

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

这个问题可以追溯到>>

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


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

所以,针对这种格式,首先是 ienew 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的格式问题哟。

高洛峰
    js new Date()参数形式:
        new Date("month dd,yyyy hh:mm:ss");
        new Date("month dd,yyyy");
        new Date(yyyy, mth, dd, hh, mm, ss);
        new Date(yyyy, mth, dd);
        new Date(ms);

        month:用英文 表示月份名称,从January到December

        mth:用整数表示月份,从(1月)到11(12月)

        dd:表示一个 月中的第几天,从1到31

        yyyy:四位数表示的年份

        hh:小时数,从0(午夜)到23(晚11点)

        mm: 分钟数,从0到59的整数

        ss:秒数,从0到59的整数

        ms:毫秒数,为大于等于0的整数
阿神

我也折腾了一下,查了资料说,Date.parse()方法不能兼容所有浏览器的。
参考了Dont的答案,稍稍做下改进吧。

function setTime(duration){
        var bTime = $('#startTime').val();
        if(bTime==''){
            alert('请输入开始时间');
            return;
        }else{
             var array = bTime.match(/\d+/g);  
             bTime = array[0]+'/'+array[1]+'/'+array[2];
             var later = new Date(bTime);
             later.setHours(parseInt(array[3]), parseInt(array[4]));
             later.setDate(later.getDate()+parseInt(duration));
             // 这个Format方法哪里来的?
             return later.Format("yyyy-MM-dd hh:mm:ss"); 
        }
    }
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号