Анализ даты с использованием строки формата токена 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));
}