当前位置: 首页 > 面试题库 >

在JavaScript中检测“无效日期”日期实例

夏侯野
2023-03-14
问题内容

我想说出JS中有效和无效日期对象之间的区别,但不知道如何:

var d = new Date("foo");
console.log(d.toString()); // shows 'Invalid Date'
console.log(typeof d); // shows 'object'
console.log(d instanceof Date); // shows 'true'

有编写isValidDate函数的想法吗?

  • 建议Date.parse使用Ash 来分析日期字符串,这为检查日期字符串是否有效提供了一种权威方法。
  • 如果可能的话,我希望我的API接受Date实例,并能够检查/确认它是否有效。Borgar的解决方案可以做到这一点,但是我需要在浏览器中对其进行测试。我也想知道是否有更优雅的方法。
  • Ash使我考虑完全不让我的API接受Date实例,这将最容易验证。
  • Borgar建议先测试一个Date实例,然后再测试Date的时间值。如果日期无效,则时间值为NaN。我使用ECMA-262进行了检查,这种行为符合标准,这正是我要寻找的。

问题答案:

这是我的处理方式:

if (Object.prototype.toString.call(d) === "[object Date]") {
  // it is a date
  if (isNaN(d.getTime())) {  // d.valueOf() could also work
    // date is not valid
  } else {
    // date is valid
  }
} else {
  // not a date
}

如果您不关心其他JS上下文(外部窗口,框架或iframe)中的Date对象,则首选以下简单形式:

function isValidDate(d) {
  return d instanceof Date && !isNaN(d);
}


 类似资料:
  • 问题内容: alert(new Date(‘2010-11-29’)); chrome,ff没问题,但是Safari会喊“无效日期”。为什么呢 编辑:好的,根据下面的评论,我使用了字符串解析并尝试了以下操作: 编辑 :似乎人们仍在这里着陆-今天,我将使用或完成此操作。Date-fns也非常轻巧。 问题答案: 该模式不是构造函数的官方支持格式。Firefox似乎支持它,但不要指望其他浏览器也这样做。

  • 我想验证用户输入的日期是否有效,格式是否正确。我使用这个块来检查用户的输入,但是当我输入一个无效的日期时,打印语句会给我奇怪的输出。 当是时,它打印

  • 问题内容: 我有一个日期变量:如果所说的日期在TODAY的3天内,我想返回一个布尔值。我不太确定如何在Python中构造它。我只处理日期,不处理日期时间。 我的工作示例是“宽限期”。一个用户登录到我的网站,如果宽限期在今天的3天之内,则该用户将省略其他脚本等。 我知道您可以在Python的日期模块中做一些花哨/复杂的事情,但我不确定在哪里看。 问题答案: 在Python中检查范围,您可以使用:

  • 我有两个日期,都是有效的ISO-8601格式,我正在尝试将它们转换为日期对象。 为什么JavaScript无法将第二个日期识别为有效的ISO-8601格式? 如何以这种格式创建Date对象?

  • 我正在使用React-Datepicker和MomentJS。但是当我想使用Moment设置starDate时,该值在datepickerfield中给出无效日期。 当我在控制台中记录this.state.start日期时,控制台会显示以下内容:“开始日期: 27-11-2018”,格式为“DD-MM-YYYY”。此格式也用于DatePicker组件。 有人能解释一下为什么它在浏览器中显示无效日期

  • 我正面临一个前所未有的奇怪问题。我有一个以毫秒为单位的日期,希望将其显示为可读的日期。这是我的代码: 如你所见,我只想创建一个显示时间跨度的字符串。当我调试代码时,日期对象包含正确的值,而