Как получить разделитель даты?

Как определить разделитель даты , если возможные разделители '.', '/', '-' ? У времени разделитель всегда ':' так что его пропускаем.
Я сейчас с помощью split разбиваю строку и 3 раза проверяю её на наличие каждого из вышеперечисленных символов. Хотелось бы знать можно это сделать в одно действие ? Если да то как ?)
  • Вопрос задан
  • 267 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Разделитель - первый символ, не являющийся цифрой. Так что

const delimiter = str.match(/\D/)[0];

// или

const delimiter = str[str.search(/\D/)];

// или

const [ delimiter ] = str.replace(/^\d+/, '');

// или

const delimiter = Array.prototype.find.call(str, n => Number.isNaN(+n));

// или

const delimiter = [...str].filter(n => !'0123456789'.includes(n)).shift();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Зачастую достаточно просто скормить строку в new Date() или Date.parse() он принимает на вход с разными разделителями.

Если вам известен формат - можно использовать moment.js, там указывается формат
Пример:
moment("2010-10-20 4:30",       "YYYY-MM-DD HH:mm");   // parsed as 4:30 local time
moment("2010-10-20 4:30 +0000", "YYYY-MM-DD HH:mm Z"); // parsed as 4:30 UTC


Можно сделать replace(/[.\/]/, '-') и привести все к дефисам.

Если формат неизвестен, то с датой легко ошибиться, представим себе шестое июля 2008 записанные в разном порядке.
'2008/07/06',
  '07-06-2008',
  '06-07-2008',
  '07/06/08',
  '06/07/08',
  '07/06/08',
  '06/07/08',
  '08/06/07',
как вы их различите не зная формат?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 21:25
5000 руб./за проект
28 нояб. 2024, в 18:46
3000 руб./за проект
28 нояб. 2024, в 17:46
10000 руб./за проект