Как отсортировать массив по дате и времени в формате «ДД-ММ-ГГГГ ЧЧ: мм: сс» в порядке убывания? - PullRequest
0 голосов
/ 02 февраля 2019

Например, формат даты и времени выглядит следующим образом: «03-11-2018 06:48:23» Как мне отсортировать массив, содержащий дату и время этого типа?

Я пробовал что-то подобное

this.fetchedData.sort(function compare(a, b) {
        var dateA = +new Date(a.date);
        var dateB = +new Date(b.date);
        return dateB - dateA;
      });

Массив JSON:

this.fetchedData = [ {chat_id: "60",
                      date: "03-11-2018 06:48:23",
                      firstname: "0",
                      img: "1541223654.png",
                      lastname: "test",
                      message: "jhsjaddhsad",
                      thread_id: "0048211296764753"
                      },

                      {chat_id: "61",
                      date: "03-12-2018 07:50:20",
                      firstname: "1",
                      img: "1541245654.png",
                      lastname: "test",
                      message: "dhsad",
                      thread_id: "0048218896764753"
                      } ];

Но этот код не работает для меня.

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Так как формат: «дд-мм-гггг чч: мм: сс», новая дата (дата) выдаст ошибку недопустимой даты.Например: новая дата ('23 -11-2018 06:48:23 ')

Логика, которую вы используете, верна, но новая Date () не будет работать со всеми форматами даты.

Используйте следующее:

var pattern = /(\d{2})\-(\d{2})\-(\d{4})\s(\d{2}):(\d{2}):(\d{2})/;
this.fetchedData.sort(function compare(a, b) {
    var dateA = +new Date(a.date.replace(pattern,'$3-$2-$1T$4:$5:$6'));
    var dateB = +new Date(b.date.replace(pattern,'$3-$2-$1T$4:$5:$6'));
    return dateB - dateA;
});

Или

Вы можете использовать библиотеку Moment или любую другую подходящую библиотеку.

0 голосов
/ 02 февраля 2019

Вы можете использовать new Date() для каждого значения массива и сравнить его для сортировки в порядке убывания:

var fetchedData = [{
    chat_id: "60",
    date: "03-11-2018 06:48:23",
    firstname: "0",
    img: "1541223654.png",
    lastname: "test",
    message: "jhsjaddhsad",
    thread_id: "0048211296764753"
  },
  {
    chat_id: "61",
    date: "03-12-2018 07:50:20",
    firstname: "1",
    img: "1541245654.png",
    lastname: "test",
    message: "dhsad",
    thread_id: "0048218896764753"
  },
  {
    chat_id: "61",
    date: "03-09-2018 07:50:20",
    firstname: "1",
    img: "1541245654.png",
    lastname: "test",
    message: "dhsad",
    thread_id: "0048218896764753"
  }
];

fetchedData.sort((a, b) => new Date(b.date) - new Date(a.date));

console.log(fetchedData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...