如何在IE11中评估有效的日期字符串

问题描述 投票:0回答:2

IE11的Date.parse函数在大量无效日期“成功”。

[不使用第三方库,验证YYYY/MM/DD格式的字符串是否包含实际的“合法”日期的正确方法是什么(例如,“ 2020/02/29”成功,但是“ 2019/02 / 29“失败,等等)在javascript中?

Examples from IE11 console

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 date validation internet-explorer-11
2个回答
0
投票

谢谢大家的反馈。这是针对对第三方库有严格限制的应用程序,因此我希望有一个内置的javascript函数可以支持此功能,但事实并非如此。

除非有人知道更好的方法,否则我将使用w3resource.com的示例代码手动评估字符串-https://www.w3resource.com/javascript/form/javascript-date-validation.php

再次感谢,迈克尔


0
投票

您可以这样写:

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'))
© www.soinside.com 2019 - 2024. All rights reserved.