JavaScript中使用Date() 在IE中返回NaN或者在Safari中返回Invalid Date
2015-10-19 21:23
716 查看
原文参考链接
JavaScript中可以使用Date对象,例如
问题来了
在IE或者Safari中使用如下两种方式:
但是Firefox、Chrome 、Opera 浏览器中会得到你想要的结果。
解决方案
解决在于你怎么选择传给Date()的参数.
上文提到的两种浏览器(IE和Safari)不支持“yyyy-mm-dd”这种传参方式
但是下面提到的方法都可以兼容各种浏览器
下文是博客主写的
这里是我其实我测试到第三种("02/07/2011")才发现可以兼容edge
下文是我写的一个html(从一个已知的父母上什么班的天数推算到今日)
为的是能在手机上查看我爸妈今天是上什么班(爸妈都是很辛苦的倒班)
来决定能不能给家里打电话 = =
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>
相关文章推荐
- js中实现中文按字母拼音排序
- 用反射的思想解释一下传说中的Fastjson解析
- Javascript使用方括号([])引用对象的属性和方法,[]和.的区别
- js解析XMl文件,兼容IE、Firefox、谷歌
- JSONP的原理
- JavaScript创建cookie
- JavaScript高级程序设计第25章(新兴的API)
- javascript之DOM操作
- javascript入门
- JavaScript 开发的45个经典技巧
- HTML学习记录<八> :嵌入JavaScript的位置
- 通过json序列化方式在django下传递模型数据
- jsp el表达式
- 认识js中的function和this
- JS实现文本框和文本域获取焦点focus()时,光标在本文的末尾
- FastJson使用
- JavaScript的Ajax数据请求与浏览器兼容
- 本地部署ArcGIS API for JavaScript
- js中prototype用法(转)
- js去除字符串中重复的编号,并删除自己的编号