IE 中的日期构造函数故障:跨浏览器比较
在 Web 开发领域,JavaScript 的日期构造函数已被证明是一个寻求操纵日期的开发人员的可靠盟友。然而,在主流浏览器中使用这个构造函数时,观察到了一个奇怪的现象。虽然 Firefox 和 Chrome 很高兴地接受了 Date 的功能,但 Internet Explorer 却很容易出错,对于某些日期操作会返回 NaN(非数字)。
为了解开这个谜团,让我们深入研究一下观察到的具体问题开发人员制作日历。他们从 PHP 格式的日期字符串 ('m, d, Y') 构建的日期在 Firefox 和 Chrome 中完美运行,但 IE 坚持抛出 NaN 脾气。
日期构造问题
function buildWeek(dateText){
var headerDates='';
var newDate = new Date(dateText);
for(var d=0;d问题的根源在于日期格式。虽然 IE 可以解析其本机格式 ('YYYY-MM-DD') 的日期,但在遇到此代码中使用的 'm, d, Y' 格式时,它会遇到困难。
解决方案:标准化日期格式
为了确保跨浏览器的兼容性,必须标准化日期构造中使用的日期格式。推荐的方法是将日期字符串转换为 IE 可以轻松理解的格式。一种方便的选择是利用 split() 方法来剖析日期字符串,然后将各个组成部分传递到 Date 构造函数中。
例如,假设 MySQL 日期时间/时间戳字段返回类似“2011- 08-03 09:15:11",以下代码片段将标准化 IE 兼容性的格式:
var dateStr="2011-08-03 09:15:11"; //returned from mysql timestamp/datetime field
var a=dateStr.split(" ");
var d=a[0].split("-");
var t=a[1].split(":");
var date = new Date(d[0],(d[1]-1),d[2],t[0],t[1],t[2]);
通过采用这个方法,您可以确保您的 Date 操作在所有主要浏览器上都能正常运行,消除可能对您的代码造成严重破坏的莫名其妙的 NaN 错误。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3