gpt4 book ai didi

Firefox 和其他人之间的 Javascript 日期怪异

转载 作者:数据小太阳 更新时间:2023-10-29 06:08:53 27 4
gpt4 key购买 nike

有谁知道为什么在 Firefox 中,如果您执行下面的代码,如果传入的字符串是四个数字且只有四个数字,它会将其验证为日期?在我测试过的所有其他浏览器(IE、Chrome)中,它总是返回为非日期。

正像下面 Marcel Korpel 指出的那样,规范声明它应该回退到使用 Firefox 的特定实现的回退,我真的很想知道为什么 Firefox 的回退会显示这个异常。

function isDate(sDate) {  
var temp = new Date(sDate);
if (temp.toString() == "NaN" || temp.toString() == "Invalid Date") {
alert("Not a Date");
} else {
alert("Is a Date!");
}
}

最佳答案

如果您将字符串传递给Date 构造函数,则该字符串的格式应为parse 可识别的格式。方法(IETF-compliant RFC 1123 timestamps)(来源:MDC)。其他一切都会导致特定于实现的行为,并且会因浏览器而异。

我建议您根本不要使用字符串,而是使用代表年、月和日的三个数字(请注意月份数字从 0(= 一月)开始),使用一个数字,自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数。

更新:看到你的例子,

var a = new Date('0123');
console.log(a);

输出

Fri Jan 01 0123 01:00:00 GMT+0100 (CET)

因此 Firefox 显然将 '0123' 识别为年份数字。

更新 2: 我认为 MDC's description of Date.parse包含您问题的答案:

Starting in JavaScript 1.8.5, a subset of ISO 8601 formatted date strings can also be parsed.

ISO 8601 页面指定(“格式”部分):

Year:
YYYY (eg 1997)
Year and month:
YYYY-MM (eg 1997-07)
Complete date:
YYYY-MM-DD (eg 1997-07-16)

因此当依赖 ISO 8601 时,仅包含四个数字的字符串将被识别为年份数字。

关于Firefox 和其他人之间的 Javascript 日期怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3627260/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com