2016-03-23 55 views
0

我提出奇怪的問題:如何在創建無效日期對象時拋出錯誤?

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

會沒有任何錯誤創建對象。其實,第一個問題是 - 爲什麼?

但後來我需要從這個對象獲得字符串 - 我試圖

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

它是什麼可能的方法來獲得字符串或檢查,這是不正確的?

+0

你想檢查提供的字符串是否是vaild日期或不是? – murli2308

+0

您想在創建Date()之前檢查該字符串是否有效,或者Date()是否無效? –

+0

我需要從'日期'對象創建或實際錯誤日期時出錯 – alexey

回答

0

你可以簡單地檢查它的有效的數字時轉換爲一個:

var ok = !isNaN(d); 

(這種轉換是不是採取d.getTime()相同)。

但要警告有效日期可能不是所需的日期。您通常使用經過驗證的日期格式。像moment.js這樣的圖書館可能會幫助你。

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