Как правильно сортировать по дате?
Не получается правильно отсортировать массив с объектами у которых есть поля c датой.
формат даты "DD-MM-YYYY HH:mm:ss".
Как я сортирую
posts.sort((a, b) => {
if (a.original_date < b.original_date) {
return 1;
}
if (a.original_date > b.original_date) {
return -1;
}
return 0;
});
получаю:
12-05-2021 22:12:32
04-06-2021 09:50:32
04-06-2021 09:25:28
04-06-2021 09:24:30
03-06-2021 18:01:28
03-06-2021 10:35:28
нужно:
04-06-2021 09:50:32
04-06-2021 09:25:28
04-06-2021 09:24:30
03-06-2021 18:01:28
03-06-2021 10:35:28
12-05-2021 22:12:32
Ответы (1 шт):
Автор решения: UModeL
→ Ссылка
Для начала приведите строку даты к правильному формату, переставив число и месяц, с помощью replace(). А далее, сравнивайте даты:
posts = [
'12-05-2021 22:12:32',
'04-06-2021 09:50:32',
'04-06-2021 09:25:28',
'04-06-2021 09:24:30',
'03-06-2021 18:01:28',
'03-06-2021 10:35:28'
];
posts.sort((a, b) => new Date(b.replace(/(\d{2})-(\d{2})/, '$2-$1')) - new Date(a.replace(/(\d{2})-(\d{2})/, '$2-$1')));
console.log(posts);