我试图将字符串格式的日期转换为JavaScript中的Date对象。该日期来自openweathermap.org API,它以下列格式提供日期字符串:
' 2018-04-28 09:00:00'或者' yyyy-mm-dd hh:mm:ss'
我知道JavaScript Date类可以采用其他字符串格式的日期,但是当我尝试使用它时,这个会返回NaN。如何转换日期字符串,如上所述,并将其轻松转换为JavaScript对象?谢谢!
答案 0 :(得分:1)
由于您在将字符串直接转换为日期时获得NaN
。您可以在空格-
和:
上拆分字符串,然后将值传递给日期构造函数并生成日期对象。
const str = `2018-04-28 09:00:00`;
const [date, time] = str.split(' ');
const [year, month, day] = date.split('-');
const [hh, mm, sec] = time.split(':');
const dateObj = new Date(year, month - 1, day, hh, mm, sec);
console.log(dateObj);

正如@RobG所指出的,这也可以使用正则表达式完成。
const str = `2018-04-28 09:00:00`;
var b = str.split(/\D/);
var date = new Date(b[0],b[1]-1,b[2],b[3],b[4],b[5]);
console.log(date);

const str = `2018-04-28 09:00:00`,
date = new Date(...(str.split(/\D/).map((v,i)=>i==1?--v:v)));
console.log(date);

答案 1 :(得分:0)
试试new Date(str)
d = new Date("2018-04-20 09:00:00")
Fri Apr 20 2018 09:00:00 GMT+0800 (Hong Kong Standard Time)
d.getDate()
20
参考:https://www.ecma-international.org/ecma-262/6.0/#sec-date-time-string-format