每当创建无效的日期对象时如何抛出错误? [复制]
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 时时间值无效
每当 MySQL 抛出警告时,我如何通知 sqlalchemy 引发错误?