我提出了一个奇怪的问题:
var d = new Date("2016--01---01");
会创建没有任何错误的对象。实际上,第一个问题是 - 为什么?
但是我需要从这个对象中获取字符串 - 我正在尝试
d.toString(); // 'Invalid Date'
d.getTime(); // NaN
d.toJSON(); // null
有什么方法可以获取字符串或检查它是否不正确?
答案 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')
}