2016-02-26 139 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的日期的字符串(其他格式也可以使用,但结果可能是意外)。

相关问题