如何在创建无效日期对象时抛出错误?

时间:2016-03-23 12:13:59

标签: javascript date

我提出了一个奇怪的问题:

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

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

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

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

有什么方法可以获取字符串或检查它是否不正确?

2 个答案:

答案 0 :(得分:1)

您可以在转换为一个时将其检查为有效数字:

var ok = !isNaN(d);

(此转化与取d.getTime())相同。

但请注意,有效日期可能不是所需的日期。您通常使用经过验证的日期格式。像moment.js这样的图书馆可能会帮助你。

答案 1 :(得分:0)

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

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')
}