Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查给定字符串是否为日期值_Javascript_Reactjs_Typescript - Fatal编程技术网

Javascript 检查给定字符串是否为日期值

Javascript 检查给定字符串是否为日期值,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我需要检查给定的字符串是否为date。 注意:不使用任何库 我试着用这个 if (!isNaN(str) || isNaN(Date.parse(str))) { console.log("Not a Date"); } else { console.log('It is Date'); } 它适用于除一个之外的所有场景,如果给定的输入是Hello 2,它将返回它是日期 那么,是否有任何方法可以根据日期正确验证字符串?尝试以下条件 if(isFinite(新

我需要检查给定的字符串是否为date。 注意:不使用任何库

我试着用这个

if (!isNaN(str) || isNaN(Date.parse(str))) {
    console.log("Not a Date");
} else {
    console.log('It is Date');
}
它适用于除一个之外的所有场景,如果给定的输入是Hello 2,它将返回它是日期


那么,是否有任何方法可以根据日期正确验证字符串?

尝试以下条件

if(isFinite(新日期(str.getTime())){
控制台日志(“非日期”);
}否则{
console.log('It is Date');
}

似乎您的需求是验证年份在1000-9999之间的日期,并使用验证日和月映射

这是你应该做的

  • 通过将变量转换为Date
    const myDate=new Date(您的日期字符串)来存储变量
  • 然后,您应该编写逻辑来检查date返回的时间是否为有效数字
    isNaN(myDate.getTime())
  • 然后,您应该编写逻辑来检查年份是否在(您需要的)范围内,例如:
    myDate.getFullYear()>9999 | | myDate.getFullYear()<1000
  • 然后,您应该检查处理的日期和月份是否有效。为此,您可以相应地使用
    myDate.getUTCMonth()
    myDate.getUTCDate()
    来获取月份和日期。并检查映射。请注意UTCMonth和UTCDate是索引
  • 如果上述各项均有效,则日期有效,否则无效。 有点像这样
函数isValidDate(myDate){
const d=新日期(myDate);
if(Object.prototype.toString.call(d)='[Object Date]'){
if(isNaN(d.getTime())| | d.getFullYear()>9999 | | | d.getFullYear()<1000 | |!(您的日期映射逻辑)){
console.log('无效日期');
}否则{
console.log('有效日期');
}
}
}

如果我输入“Hello 2”,它会工作,但如果字符串是数字,如“213213”,它会说“It is Date”是的,字符串已成功解析到日期
Tue Jan 01 213213
您是否在寻找任何特定的日期格式验证?不,给定的字符串可以是任何日期格式,它应该验证为Date,否则不会。如果您知道要获取的日期格式,可以使用正则表达式。大概是这样的:
function isValidDate(myDate) {
  const d = new Date(myDate);
  if (Object.prototype.toString.call(d) === '[object Date]') {
    if (isNaN(d.getTime()) || d.getFullYear() > 9999 || d.getFullYear() < 1000 || !(your_date_mapping_logic)) {
      console.log('Invalid Date.');
    } else {
      console.log('Valid Date.');
    }
  }
}