您的位置:首页 > Web前端 > JavaScript

JavaScript中使用Date() 在IE中返回NaN或者在Safari中返回Invalid Date

2015-10-19 21:23 716 查看
原文参考链接

JavaScript中可以使用Date对象,例如
var d = new Date();
这步操作仅能得到当前时间,如果需要过去或者将来的时间,需要使用合适的参数。



问题来了


在IE或者Safari中使用如下两种方式:

var d = new Date("2011-02-07");
alert(d);
或者
var d = new Date("2011-02-07T11:05:00");
alert(d);
在 IE 中你会得到 ‘NaN’ ,在Safari 中你会得到 ‘Invalid Date’.

但是Firefox、Chrome 、Opera 浏览器中会得到你想要的结果。

解决方案

解决在于你怎么选择传给Date()的参数.

上文提到的两种浏览器(IE和Safari)不支持“yyyy-mm-dd”这种传参方式

但是下面提到的方法都可以兼容各种浏览器

var d = new Date(2011, 01, 07); // yyyy, mm-1, dd
var d = new Date(2011, 01, 07, 11, 05, 00); // yyyy, mm-1, dd, hh, mm, ss
var d = new Date("02/07/2011"); // "mm/dd/yyyy"
var d = new Date("02/07/2011 11:05:00"); // "mm/dd/yyyy hh:mm:ss"
var d = new Date(1297076700000); // milliseconds
var d = new Date("Mon Feb 07 2011 11:05:00 GMT"); // ""Day Mon dd yyyy hh:mm:ss GMT/UTC


下文是博客主写的

这里是我其实我测试到第三种("02/07/2011")才发现可以兼容edge

下文是我写的一个html(从一个已知的父母上什么班的天数推算到今日)

为的是能在手机上查看我爸妈今天是上什么班(爸妈都是很辛苦的倒班)

来决定能不能给家里打电话 = =

<!DOCTYPE html>
<head>
<meta  charset="UTF-8">
<title>计算爸妈今天上什么班</title>
<script>
function Date2Str(Date){    //Date是Date类型的
var strMonth = (Date.getMonth()+1).toString();
var strDate = (Date.getDate()).toString();
var strYear = Date.getFullYear().toString();
var strToday = strMonth + "/" + strDate + "/" + strYear;
return strToday;
}
function  DateDiff(Date1,  Date2){//Date1和Date2是Date类型的,缺交换天数的功能
str1 = Date2Str(Date1);
document.write("今天是"+str1+"<br />");
str2 = Date2Str(Date2);
document.write("上次我长记性是"+str2+"<br />");
iDays  =  ((Date.parse(str1)- Date.parse(str2))/1000/60/60/24);
//把相差的毫秒数转换为天数
return  iDays;
}
var init = new Date("09/27/2015");

var today = new Date();
interval = DateDiff(today, init);
document.write("相隔:"+interval+"天\n");
var Period = 8;
var mod = interval%Period;
if( mod == 0){
document.write("我妈下夜班 我爸休息");
}
else if(mod == 1){
document.write("我妈休息 我爸白班");
}
else if(mod == 2){
document.write("我妈白班 我爸上夜班");
}
else if(mod == 3){
document.write("我妈上夜班 我爸下夜班");
}
else if(mod == 4){
document.write("我妈下夜班 我爸白班");
}
else if(mod == 5){
document.write("我妈休息 我爸上夜班");
}
else if(mod == 6){
document.write("我妈白班 我爸下夜班");
}
else if(mod == 7){
document.write("我妈上夜班 我爸休息");
}
</script>
</head>
<body>

</body>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: