Анализ даты с использованием строки формата токена Unicode с символами-разделителями

Я использую date-fns 2 (alpha) для разбора строки даты в JavaScript Date. Эта версия библиотеки использует юникодные токены для строк формата / разбора.

Я хотел бы иметь возможность разобрать строку даты, не заботясь особенно о символах разделителя.

Например, я хочу разобрать следующую дату: "18/11/2018". Я могу использовать формат dd/MM/yyyy, Который прекрасно работает:

> dateFns.parse('18/11/2018', 'dd/MM/yyyy', new Date());
2018-11-18T00:00:00.000Z

Но, скажем, я хочу разобрать дату, отформатированную как "18 11 2018", исходная строка формата не удастся:

> dateFns.parse('18 11 2018', 'dd/MM/yyyy', new Date());
Invalid Date

Учитывая, что символ-разделитель не влияет на значение самой даты, есть ли способ создать строку формата, которая по существу игнорирует ее?

1 ответ

Если вы пытаетесь преобразовать строку даты в dd mm yyyy формат с различными разделителями для объекта даты JS (в UTC), вы можете использовать регулярное выражение для анализа строк, а затем new Date(Date.UTC(...)), Например:

const convertDate = (dstring) => {
  let [d, m, y] = dstring.match(/\d+/g);
  return new Date(Date.UTC(y, m - 1, d));
}

// the below demonstrates output for a variety of date string separators

const dstrings = ['18/11/2018', '18 11 2018', '18-11-2018', '18.11.2018'];

for (let dstring of dstrings) {
  let date = convertDate(dstring);
  console.log(JSON.stringify(date));
}

Другие вопросы по тегам