我在通过原生 JS Date 对象解析日期时遇到问题。
new Date("I'm really clever date 8745")
这个表达式返回有效的日期,这对我来说非常令人震惊。如何防止这种特殊行为?
编辑:日期将最后一个数字解释为年份...
编辑:Chrome,版本 (48.0.2564.116)
编辑:预期格式为“2016-03-20T18:05:53.485Z”(JSON stringify)
最佳答案
如果您打算“匹配”任何有效日期(例如圣诞节......),这远非简单。如果您只想允许某种格式类型,我将使用正则表达式。这是一个简单的不是很扩展的例子:
function isprobablyavaliddate(str){
var allowed = /\d{4}[\\\/-]{1}\d{2}[\\\/-]{1}\d{2}/
//example allowed date formats: yyyy-mm-dd, yyyy/mm/dd
return allowed.test(str)
}
var testString = "I'm really clever date 8745"
//catch valid string before doing anything with a date...
if ( isprobablyavaliddate(testString) ) mydate = new Date(testString)
else ...
对于编辑中请求的有效格式:/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{ 2}\.\d+Z/
(^
用于匹配首字母)
关于javascript - js Date 太多聪明的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36117234/