【发布时间】:2020-05-27 19:26:31
【问题描述】:
IE11 的Date.parse 函数在大量无效日期上“成功”。
在不使用第三方库的情况下,验证YYYY/MM/DD 格式的字符串是否包含实际的“合法”日期(例如“2020/02/29”成功,但“2019/02”的正确方法是什么? /29" 失败,等等)在 javascript 中?
new Date(Date.parse('2020/05/99') // Fri Aug 07 2020
new Date(Date.parse('2020/05/100') // Sat Aug 08 20202
new Date(Date.parse('2020/05/1000') // Wed Jan 25 2023
new Date(Date.parse('2020/69/800000') // Fri Dec 29 4215
new Date(Date.parse('2020/69/1000') // Sat May 27 2028
new Date(Date.parse('2020/70/1000') // Invalid Date
【问题讨论】:
-
请不要分享代码/文本的截图。始终复制粘贴,以便为要回答您的问题的人提供更好的可读性:)
-
听起来不像是个聪明人,但您的选择是:a)使用库或 b)自己编写。 Date.parse(....) 将接受多种日期格式——不同的浏览器将支持不同的格式。
-
它通过不抛出错误来“成功”。并不意味着它是正确的 - 当您解析非标准日期字符串时,您可以获得任何非标准行为。我不建议以任何形式或形式依赖它。 a) 使用日期解析库或 b) 使用标准日期字符串。
标签: javascript date validation internet-explorer-11