Преобразование строки в дату в JavaScript - PullRequest
546 голосов
/ 11 апреля 2011

Как я могу преобразовать строку в дату в JavaScript?

var st = "date in some format"
var dt = new date();

var dt_st= //st in date format same as dt

Ответы [ 32 ]

0 голосов
/ 03 апреля 2019

Еще один способ сделать это - создать регулярное выражение с именованными группами захвата поверх строки формата, а затем использовать это регулярное выражение для извлечения дня, месяца и года из строки даты:

function parseDate(dateStr, format) {
  const regex = format.toLocaleLowerCase()
    .replace(/\bd+\b/, '(?<day>\\d+)')
    .replace(/\bm+\b/, '(?<month>\\d+)')
    .replace(/\by+\b/, '(?<year>\\d+)')
  
  const parts = new RegExp(regex).exec(dateStr) || {};
  const { year, month, day } = parts.groups || {};
  return parts.length === 4 ? new Date(year, month-1, day) : undefined;
}

const printDate = x => console.log(x ? x.toLocaleDateString() : x);

printDate(parseDate('05/11/1896', 'dd/mm/YYYY'));
printDate(parseDate('07-12-2000', 'dd-mm-yy'));
printDate(parseDate('07:12:2000', 'dd:mm:yy'));
printDate(parseDate('2017/6/3', 'yy/MM/dd'));
printDate(parseDate('2017-6-15', 'y-m-d'));
printDate(parseDate('2015 6 25', 'y m d'));
printDate(parseDate('2015625', 'y m d')); // bad format
0 голосов
/ 14 октября 2014

Строки даты в соответствии с ISO 8601, как и стандарт, все еще не получили широкого распространения.

Это отличный ресурс, чтобы выяснить, какой формат строки даты вы должны использовать:

http://dygraphs.com/date-formats.html

Да, это означает, что ваша строка даты может быть такой же простой, как и

"2014/10/13 23:57:52" вместо "2014-10-13 23:57:52"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...