спасибо, я обновляю свой ответ, чтобы добавить некоторые выводы, ваш ответ поможет мне понять
аюсь установить эпоху, когда данные создаются в Firestore. Я рассчитываю получить некоторый результат, аналогичный тому, что делается в базе данных в реальном времени, используяServerValue.TIMESTAMP
.
Я не хочу устанавливать его, используя время устройстваSystem.getCurrentMillis
потому что это время может быть изменено пользователем.
Согласно сдокументы необходимо сделать обновление, проблема с форматом. Это мой код:
Map<String, Object> map = new HashMap<>();
map.put("timestamp", FieldValue.serverTimestamp());
reference.update(map);
И это результат в веб-консоли Firebase:
Я был очень удивлен, что это по-испански, что может быть полезно в некоторых ситуациях, но я гонюсь за эпохой. Попытайтесь увидеть светлую сторону, придерживайтесь ее и подумали, что я вижу сеть на испанском, поэтому я изменил язык в селекторе нижнего колонтитула, он не изменился. На данный момент я предполагаю, что установлен на языке проекта.
Вернемся к попытке эпохи. Учитывая, что в моем проекте также используется база данных в реальном времени, я пытаюсь настроить ее следующим образом:
Map<String, Object> map = new HashMap<>();
map.put("timestamp", ServerValue.TIMESTAMP);
reference.update(map);
Он загрузил что-то, но это была чепуха.
Я думаю, что использование epoch в качестве метки времени на стороне сервера является лучшим стандартным подходом, после этого каждый клиент может преобразовать его в удобство и локаль пользователя.
Может ли эпоха быть установлена в качестве значения сервера в Firestore?
ОБНОВИТЬ
Ответ, помеченный как правильный, привел меня к некоторым интересным выводам, которыми я хотел бы поделиться, поэтому другие в той же ситуации могут извлечь выгоду из:
Нет необходимости устанавливать эпоху из-заFieldValue.serverTimestamp()
это объект даты, обрабатываемый базой данных, и то, что мы видим в консоли, это просто удобный способ показать это.посколькуFieldValue.serverTimestamp()
является объектом даты, его можно отсортировать, как и любую другую временную метку, если добавитьorderBy("timestamp", Query.Direction.DESCENDING)
на ваш запрос (илиQuery.Direction.ASCENDING
) он будет сортировать результаты правильно.И что касается комментария @ 34m0, это правильно, клиенты не должны заботиться о логике для установки времени создания, но это должно быть сделано в функциях.