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
谢谢大家的反馈。这是针对对第三方库有严格限制的应用程序,因此我希望有一个内置的javascript函数可以支持此功能,但事实并非如此。
除非有人知道更好的方法,否则我将使用w3resource.com的示例代码手动评估字符串-https://www.w3resource.com/javascript/form/javascript-date-validation.php
再次感谢,迈克尔
您可以这样写:
function parseDate(dateString) {
var dateParts = dateString.split("/"),
years = dateParts[0],
months = dateParts[1],
days = dateParts[2]
// sanity check date parts
if (days > 31) return "Invalid Date - Days"
if (months > 12) return "Invalid Date - Months"
var myDate = new Date(years, months, days)
return myDate
}
堆栈摘要中的演示
function parseDate(dateString) {
var dateParts = dateString.split("/"),
years = dateParts[0],
months = dateParts[1],
days = dateParts[2]
// sanity check date parts
if (days > 31) return "Invalid Date - Days"
if (months > 12) return "Invalid Date - Months"
var myDate = new Date(years, months, days)
return myDate
}
console.log('2020/05/15: ', parseDate('2020/05/15'))
console.log('2020/05/99: ', parseDate('2020/05/99'))
console.log('2020/05/100: ', parseDate('2020/05/100'))
console.log('2020/70/1000: ', parseDate('2020/70/1000'))