javascript - js Date 太多聪明的行为

标签 javascript

我在通过原生 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/

相关文章:

javascript - 如何在 Yeoman 生成器的 enquirer.js 多选提示中添加分隔符?

javascript - 创建动态数组 Javascript

javascript - 将 SVG 'd' 属性正确拆分为标记的正则表达式是什么?

javascript - 如果当前时间大于且小于特定时间,如何调用函数

javascript - 如何从外部文件更改标记为 var 的函数?

javascript - 卡在从第三帧抓取数据

javascript - jQuery 随机淡入图像

javascript - 在 chrome javascript 控制台中触发表单提交

javascript - Twilio 测试短信没有结果 StatusCallback

javascript - 有条件地调用 GulpJS 任务(手动)