@ Кристоф Упоминает использование регулярного выражения для решения проблемы. Вот что я использую:
var dateString = "2010-08-09 01:02:03";
var reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/;
var dateArray = reggie.exec(dateString);
var dateObject = new Date(
(+dateArray[1]),
(+dateArray[2])-1, // Careful, month starts at 0!
(+dateArray[3]),
(+dateArray[4]),
(+dateArray[5]),
(+dateArray[6])
);
Это ни в коем случае не разумно, просто настройте регулярное выражение и new Date(blah)
в соответствии с вашими потребностями.
Редактировать: Может быть, немного более понятным в ES6 с использованием деструктуризации:
let dateString = "2010-08-09 01:02:03"
, reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/
, [, year, month, day, hours, minutes, seconds] = reggie.exec(dateString)
, dateObject = new Date(year, month-1, day, hours, minutes, seconds);
Но, честно говоря, в эти дни я достигаю чего-то вроде Момента