gpt4 book ai didi

javascript - 有效的 Javascript Date 对象需要什么?

转载 作者:行者123 更新时间:2023-11-30 08:09:18 26 4
gpt4 key购买 nike

我整天都在为这个问题苦思冥想。无论我如何初始化 Javascript Date,我似乎都无法获得有效的 Date 对象......我假设 Date 无效并且无法通过使用 Chrome 调试器检查它来正常工作,该调试器的值为'__proto__:Invalid Date'。

我已经尝试了以下所有方法:

var d = new Date();
var d = new Date('2012-10-08');
var d = new Date('2012-10-08 00:00:00');
var d = new Date(Date('2012-10-08'));
var d = new Date(Date.parse('2012-10-08'));
var d = new Date(2012,10,08);
var d = new Date("October 13, 1975 11:13:00");

以及无数其他尝试。

这在 iOS 中提出了一个问题,我试图从这些 Date 对象中获取值,但每个函数都只返回 NaN。我宁愿避免必须使用外部库或必须将 YYYY-MM-DD 格式转换为任何其他格式,因为我试图让它与 HTML5 input type="date"一起使用,移动代码最少网站。

从本质上讲,这可以归结为:使 Date 对象有效的参数是什么?!

最佳答案

不要信任 Date 对象来解析字符串,您必须手动进行。给定格式 2012-10-08

function stringToDate(s) {
s = s.match(/\d+/g);
if (s) {
return new Date(s[0], --s[1], s[2]);
}
}

您可能想要对输入字符串和生成的日期对象进行一些验证,上面只是显示了转换。

编辑

顺便说一句,似乎在所有浏览器中一致解析的唯一字符串格式是美国特定的 month/date/year 格式。没有支持其使用的规范,除了实用主义和“遗留”原因外,也没有任何理由相信浏览器会继续支持它。

对于绝大多数地区,“2/3/2012”被解释为 3 月 2 日,因此获得 2 月 3 日可能出乎意料。

一旦旧版本的 IE 不再使用(可能还有几年),根据 ECMA-262 使用 ISO8601 扩展格式应该是安全的。然而,即使是支持它的浏览器也是不一致的。例如给定:

new Date('2011-02-29');

Firefox 15 返回“无效日期”,IE 9 和 Chrome 22 返回 2011 年 3 月 1 日的日期对象。

关于javascript - 有效的 Javascript Date 对象需要什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12809492/

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