我需要将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:ss
或YYYY-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();