Задать вопрос
@DedliParkurKillerDark

Как сделать сортировку дат в toLocaleString виде?

Есть у меня массив
const arr = ["13.11.2022, 09:43:27", "13.11.2022, 09:45:27", "13.11.2022, 09:53:28", "13.11.2022, 09:33:29"]

И тут проблема: Я знаю как сортировать массивы дат, точнее я уже создавал вопросы по этому поводу и мне помогли, но с датами в формате toLocaleString это не работает.
Для сортировки дат в массиве я использую такой метод:
const arr = ["13.11.2022, 09:43:27", "13.11.2022, 09:45:27", "13.11.2022, 09:53:28", "13.11.2022, 09:33:29"]
arr.sort((a, b) => {
  return new Date(a) - new Date(b)
})

И он не работает с таким форматом дат
И, кстати, дата в этом формате в отличие от даты в формате toISOString или toUTCString не конвертируется в другие форматы дат. Я про:
new Date("13.11.2022, 09:43:27").toISOString() //происходит ошибка "Invalid Date"
new Date("2022-11-13T09:43:27").toUTCString() //конвертируется в "Sun, 13 Nov 2022 06:43:27 GMT"
new Date("2022-11-13T09:43:27").toLocaleString() // конвертируется в "13.11.2022, 09:43:27"
  • Вопрос задан
  • 108 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const sorted = (arr, key) => arr
  .map(n => [ key(n), n ])
  .sort(([a], [b]) => a < b ? -1 : +(a > b))
  .map(n => n[1]);


const sortedArr = sorted(arr, n => new Date(n.replace(/(\d+)\.(\d+)\.(\d+),/, '$3-$2-$1')));
// или
const sortedArr = sorted(arr, n => n.replace(/.+(?=,)/, m => m.split('.').reverse().join('')));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы