2016-02-26 54 views
-2

我在格式YYYYMMDD日期在JavaScript中創建一個日期對象,即20160110,但無法使用此方法的新日期(「20160110」),因爲它提供了無效的日期錯誤使用格式YYYYMMDD

+0

那不是構造函數的有效值。 'd = new Date(str.substr(0,4),str.substr(4,2) - 1,str.substr(6,2))' –

+0

小心,該月份從索引0開始,因此您應該減去1 –

+0

是的,我這樣做。 –

回答

1

使用正則表達式轉換:

var date = "20160226".match(/(\d{4})(\d{2})(\d{2})/).map(x => +x); // ES6 to parse as integer 
date[2] -= 1; // cause month starts at index 0 
date = new Date(date[1], date[2], date[3]) 

console.log(date); 
3

這不是一個有效的日期格式與日期()使用。請使用ISO 8601 syntax(YYYY-MM-DD)。如果你在yyyymmdd格式日期變量,那麼你可以做:

new Date(date.replace(/(....)(..)(..)/,"$1-$2-$3")) 

MDN

語法

直接調用:

Date.parse(dateString) 

隱含調用:

new Date(dateString) 

參數

dateString
表示RFC2822或ISO 8601的日期的字符串(其他格式也可以使用,但結果可能是意外)。

相關問題