每当创建无效的日期对象时如何抛出错误? [复制]

Posted

技术标签:

【中文标题】每当创建无效的日期对象时如何抛出错误? [复制]【英文标题】:How to throw an error whenever an invalid date object is created? [duplicate] 【发布时间】:2016-07-10 17:29:09 【问题描述】:

我提出了奇怪的问题:

var d = new Date("2016--01---01");

将创建没有任何错误的对象。实际上,第一个问题是 - 为什么?

但是我需要从这个对象中获取字符串 - 我正在尝试

d.toString();     // 'Invalid Date'
d.getTime();      // NaN
d.toJSON();       // null

有哪些可能的方法来获取字符串或检查它是否不正确?

【问题讨论】:

您要检查提供的字符串是否为有效日期吗? 您是要在创建Date() 之前检查字符串是否有效,还是要在之后检查Date() 是否无效? 我需要从 Date 对象创建错误或实际错误日期 【参考方案1】:

创建一个工厂类型函数,如果给定的字符串产生无效日期,则抛出错误,但如果有效则返回日期

var d = createDate("2016--01---01")

createDate = function(str)     
  var date = new Date(str)
  if(date instanceof Date && !isNaN(date.valueOf())) return date
  else throw Error('invalid date')

【讨论】:

【参考方案2】:

您可以简单地检查它是否是一个有效的数字转换为一:

var ok = !isNaN(d);

(这个转换和取d.getTime()一样)。

但请注意,有效日期可能不是所需的日期。您通常使用经过验证的日期格式。像 moment.js 这样的库可能会在这方面为您提供帮助。

【讨论】:

以上是关于每当创建无效的日期对象时如何抛出错误? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

抛出错误 RangeError:将自定义日期设置为 react-datepicker 的 DatePicker 时时间值无效

BigQuery:无效日期错误

每当 MySQL 抛出警告时,我如何通知 sqlalchemy 引发错误?

Parse.com JSON 导入抛出:键类型无效...,预期日期,但得到字符串

为啥 jsonwebtoken 会抛出“无效签名”错误?

设置沙盒测试员帐户时出现“无效年份”错误