Любые идеи о том, как анализировать "2010-08-17 12:09:36" с новой датой ()?
До ES5 не было никакого строкового формата, в котором бы браузеры былитребуется поддержка, хотя есть ряд, которые широко поддерживаются.Однако поддержка браузера ненадежна и противоречива, например, некоторые допускают значения за пределами границ, а другие нет, некоторые поддерживают определенные форматы, а другие нет и т. Д.
В ES5 появилась поддержка некоторых форматов ISO 8601, однако OPне совместим с ISO 8601, и не все используемые браузеры его поддерживают в любом случае.
Единственный надежный способ - использовать небольшую функцию синтаксического анализа.Далее анализируется формат в OP, а также проверяются значения.
/* Parse date string in format yyyy-mm-dd hh:mm:ss
** If string contains out of bounds values, an invalid date is returned
**
** @param {string} s - string to parse, e.g. "2010-08-17 12:09:36"
** treated as "local" date and time
** @returns {Date} - Date instance created from parsed string
*/
function parseDateString(s) {
var b = s.split(/\D/);
var d = new Date(b[0], --b[1], b[2], b[3], b[4], b[5]);
return d && d.getMonth() == b[1] && d.getHours() == b[3] &&
d.getMinutes() == b[4]? d : new Date(NaN);
}
document.write(
parseDateString('2010-08-17 12:09:36') + '<br>' + // Valid values
parseDateString('2010-08-45 12:09:36') // Out of bounds date
);