javascript下ie7,ie8的Date Bug的解决 .
2015-09-25 14:11
543 查看
转自:http://blog.csdn.net/fjh658/article/details/8524530
ie9+, chrome firefox opera下 string到Date 使用 Date("2013-01-01"); 都是ok的。
但在ie7, ie8下 返回NaN
国外有人写了这样一个解决办法
[javascript]
view plaincopyprint?
/**Parses string formatted as YYYY-MM-DD to a Date object.
* If the supplied string does not match the format, an
* invalid Date (value NaN) is returned.
* @param {string} dateStringInRange format YYYY-MM-DD, with year in
* range of 0000-9999, inclusive.
* @return {Date} Date object representing the string.
*/
function parseISO8601(dateStringInRange) {
var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,
date = new Date(NaN), month,
parts = isoExp.exec(dateStringInRange);
if(parts) {
month = +parts[2];
date.setFullYear(parts[1], month - 1, parts[3]);
if(month != date.getMonth() + 1) {
date.setTime(NaN);
}
}
return date;
}
使用如下:
parseISO8601("2013-01-01");
ie9+, chrome firefox opera下 string到Date 使用 Date("2013-01-01"); 都是ok的。
但在ie7, ie8下 返回NaN
国外有人写了这样一个解决办法
[javascript]
view plaincopyprint?
/**Parses string formatted as YYYY-MM-DD to a Date object.
* If the supplied string does not match the format, an
* invalid Date (value NaN) is returned.
* @param {string} dateStringInRange format YYYY-MM-DD, with year in
* range of 0000-9999, inclusive.
* @return {Date} Date object representing the string.
*/
function parseISO8601(dateStringInRange) {
var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,
date = new Date(NaN), month,
parts = isoExp.exec(dateStringInRange);
if(parts) {
month = +parts[2];
date.setFullYear(parts[1], month - 1, parts[3]);
if(month != date.getMonth() + 1) {
date.setTime(NaN);
}
}
return date;
}
/**Parses string formatted as YYYY-MM-DD to a Date object. * If the supplied string does not match the format, an * invalid Date (value NaN) is returned. * @param {string} dateStringInRange format YYYY-MM-DD, with year in * range of 0000-9999, inclusive. * @return {Date} Date object representing the string. */ function parseISO8601(dateStringInRange) { var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/, date = new Date(NaN), month, parts = isoExp.exec(dateStringInRange); if(parts) { month = +parts[2]; date.setFullYear(parts[1], month - 1, parts[3]); if(month != date.getMonth() + 1) { date.setTime(NaN); } } return date; }
使用如下:
parseISO8601("2013-01-01");
相关文章推荐
- JSP页面空指针异常调错办法之weblogic
- 转:表单中Readonly和Disabled的区别(HTML中使用javascript解除禁止input输入框代)
- 关于js动态向下拉列表中添加数据
- JavaScript高级程序设计之JavaScript实现 第1.2讲笔记
- JavaScript 开发的45个经典技巧
- JavaScript 对象方法 类方法 原型方法的区别;私有属性 公有属性 公有静态属性的区别
- 转载:JSON.parse()方法
- JavaScript高级程序设计之JavaScript 简介 第1.1讲笔记
- JS获得当前浏览器的地址参数信息
- jsp使用注释格式问题
- JS防止刷新,后退,关闭
- JS防止刷新,后退,关闭
- JS~js里实现队列与堆栈
- JSP学习之异常处理实例分析
- js中label表达式
- 关于翻译ArcGIS API for JavaScript开发书籍的经历
- JavaScript的数组和Java的数组的差别
- html 查看pdf文件 pdf.js
- JavaScript中易犯的小错误分享
- ArcGIS API for JavaScript开发环境搭建及第一个实例demo