Я думаю, что вы смешиваете использование аннотации ServerTimestamp
с использованием статического метода serverTimestamp()
Аннотация ServerTimestamp
используется для пометки поля метки времени, которое должно быть заполненометка времени сервера. Если записываемый POJO содержит ноль для поля, аннотированного @ ServerTimestamp, он будет заменен на сгенерированную сервером метку времени. "
В вашем коде нет POJO, содержащего ноль для time
Объект Date.
С другой стороны, когда вы делаете dataMap.put("endDate", FieldValue.serverTimestamp());
, вы сообщаете Firestore «включать сгенерированную сервером отметку времени» для значения endDate
.
Так что этоОбычно вы находите одинаковое время для трех значений, так как они записываются в базу данных (квази) одновременно.
Кроме того, обратите внимание, что между (например) двумя следующими строками нет связи.
time.setTime (...); // here change the date to be the endDate
dataMap.put("endDate", FieldValue.serverTimestamp());
В первой строке вы устанавливаете новое значение для time
, но time
не используется во 2-й строке.И FieldValue.serverTimestamp()
не связан с объектом time
, как объяснено выше.
Итак, в заключение вам, вероятно, придется взять полный контроль над значениями, которые вы хотите записать (с помощью time.setTime(...);
как вы делаете) и избегайте использования метода serverTimestamp()
, но используйте объект времени.