Проблема при сортировке по году, месяцу и дню - PullRequest
0 голосов
/ 08 апреля 2019

Я искал похожие темы, но, похоже, ни одна из них не работает в моем случае.

У меня есть таблица, которую я сортирую по дате и времени.И время, кажется, работает нормально.(Так как я мог использовать это в марте), но как только дата перенесена на апрель, она больше не работает, и я понятия не имею, как я могу это исправить.

Я использую базу данных Firestore, и я добавил индекс для «Дата» и «Время» в качестве удаления.

//Choosing collection
            db.collection("rastad").document(authentication!).collection("promenad")
                .order(by: "Date", descending: true)
                .order(by: "Time", descending: true)
                .getDocuments()

Результат не тот, который я ищу, потому что, когда я добавляю новую запись, она будет размещена в середине таблицы.(Рядом с 3/3/2019 один).Но я хочу это отсортировать по месяцам, годам и дням.Таким образом, каждая добавленная новая запись должна быть помещена в верхнюю часть таблицы.

Я надеюсь, вы понимаете, чего я пытаюсь достичь.

Nana

1 Ответ

0 голосов
/ 08 апреля 2019

Ваши даты - это отформатированные строки, такие как DD / MM / YYYY, которые не очень хорошо сортируются в хронологическом порядке.Хотя 1 марта 2019 года («01/03/2019») может сортироваться раньше, чем 10 апреля («10/04/2019»), это только случайность, поскольку первый символ 0 оказывается меньше первого символа 1. Подумайтео том, как 11 марта сортируется после 10 апреля с использованием той же логики сортировки строк.

Обычно вы сохраняете моменты во времени, используя объекты типа Timestamp в Firestore, или целые числа, когда они представлены во времени Unix.Струн обычно избегают.Хотя иногда удобнее хранить строки (если это то, что вы хотите отобразить), строки почти всегда ужасны для сортировки.

Если вам абсолютно необходимо использовать строку, ваши компоненты даты и времени должны храниться максимальноединица к наименьшей единице.Таким образом, для дат вы должны будете использовать ГГГГММДД.В любом случае вам следует форматировать даты на клиенте, используя локаль, предоставляемую устройством (потому что американцы предпочитают формат MM / DD / YYYY - странно, правда?).Я знаю, что Android предоставляет API для форматирования даты и времени, которые соответствуют предпочтениям пользователя.Я могу только изображения iOS делает то же самое.

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