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

How to throw an error whenever an invalid date object is created?

本问题已经有最佳答案,请猛点这里访问。

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

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

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

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

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

获取字符串或检查其是否不正确的可能方法是什么?


当转换为一个数字时,您只需检查它是否为有效数字:

1
var ok = !isNaN(d);

(此转换与使用d.getTime()相同)。

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


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

1
2
3
4
5
6
7
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')
}