【发布时间】:2017-10-05 12:01:00
【问题描述】:
我想检查一个字符串是否代表具有给定格式的日期。
我尝试了Date.parse(string, format),但它会将字符串解析为日期,即使它的格式完全不同。例如:
Date.parse("2015-07-04T23:10:00.000+02:00", "yyyy-MM-ddTHH:mm:ss.SSSZ") // Parsed as a date
Date.parse("2000", "yyyy-MM-ddTHH:mm:ss.SSSZ") // Parsed as a date also`
我不想将第二行解析为日期,因为它不是所需的格式。
我还尝试了Date.js 的Date.parseExact() 方法,但如果我提供了上面的时区和格式,它不会解析日期。
正确的解决方案基于 RobG 的评论:(但感谢大家帮助我)
moment("2015-07-04T23:10:00.000+02:00", "yyyy-MM-ddTHH:mm:ss.SSSZ", true).isValid()
即使输入只是我试图避免的一年,其他所有解决方案都会成功解析。最后一个参数“true”代表“严格”解析,它提供了我正在寻找的输出。
【问题讨论】:
-
使用自定义正则表达式可能不是一个坏主意
-
但是 Date.parse 将解析所有可能是我不想要的日期的内容,我只想在字符串与给定格式匹配的情况下解析,否则失败。
标签: javascript date parsing format