用javascript将dd-mm-yyyy hh:mm:ss转换为新日期()



我需要将22-06-2021 10:14:17转换为new Date(),但它被标记为无效日期。

这是代码:

var dateString = "22-06-2021 10:14:17"; // Oct 23

var dateObject = new Date(dateString);
document.body.innerHTML = dateObject.toString();

日期构造函数可以接受数值(从1970年开始的毫秒(、ISO格式的字符串(YYYY-MM-DDTHH:mm:ssYYYY-MM-DDTHH:mm:ss.mssZ(或按降序排列的单独数值

示例:

console.log(new Date()); // today
console.log(new Date(1624346057000)); // ms from 1970
console.log(new Date("2021-06-22T07:14:17.000Z"));
console.log(new Date(2021, 5, 22, 7, 14, 17));

假设您可以接受DD-MM-YYYY HH:mm:ss格式的字符串,那么您可以使用正则表达式来解析字符串,并将单独的值传递给构造函数。

var dateString = "22-06-2021 10:14:17"; // Oct 23
var [, date, month, year, hour, min, sec] = /(d+)-(d+)-(d+)s+(d+):(d+):(d+)/.exec(dateString).map(Number);
var dateObject = new Date(year, month - 1, date, hour, min, sec);
console.log(dateObject.toISOString()); // gmt
console.log(dateObject.toString()); // local

请记住,月份是基于指数的,因此它们从0(0-11而不是1-12(开始

function setDateTime(dateTime) {
const [date, time] = dateTime.split(" ");
const [DD, MM, YYYY] = date.split("-");
const [h, m, s] = time.split(":");
return new Date(YYYY, MM - 1, DD, h, m, s);
}
const dateObject = setDateTime("22-06-2021 10:14:17")
console.log(dateObject);
document.body.innerHTML = dateObject.toString();

最新更新