【发布时间】:2011-03-06 09:11:27
【问题描述】:
在我正在进行的项目中,我需要验证输入到 <input type="date"> 中的日期
对于 Safari 4/5(在 Mac OSX 上),Javascript 无法解析 YYYY-MM-DD 格式的日期,返回 NaN 而不是预期的纪元时间戳。
我正在使用以下技术在提交表单之前验证该字段:
//value = '2010-06-21'
var stamp = Date.parse(value);
if (isNaN(stamp)) {
//notify user
} else {
value = new Date(stamp).format_mysql();
}
format_mysql() 是一个原型函数,它将日期(正确)格式化为 MySQL 日期时间格式 (YYYY-MM-DD)。
将- 替换为/ (YYYY/MM/DD) 会产生“正确”的时间戳。
我应该注意,该字段应该接受任何日期格式,而不仅仅是 YYYY-MM-DD,尽管我愿意,但我不能使用 Date.js 之类的库
我该如何解决这个问题,或者有没有更好的方法来解析/验证日期?
【问题讨论】:
-
我有 Safari 5.17,这对我来说很好用(也在 iOS 5.12 上测试过):when = Date.parse("2013-01-29 08:30");
-
Date()构造函数接受的字符串因浏览器而异,但最安全的字符串似乎是 YYYY/MM/DD——参见 dygraphs.com/date-formats.html。
标签: javascript validation datetime safari