Итак, если у вас есть схема базы данных, которая выглядит следующим образом:
Firestore-root
|
--- users (collection)
|
--- uidOne (document)
|
--- name: "UserOne"
|
--- creationDate: January 25, 2020 at 3:37:59 PM UTC+3 //Timestamp
Чтобы получить значение свойства creationDate
как объекта Date
, используйте следующие строки кода:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference usersRef = rootRef.collection("users");
usersRef.document(uid).get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
Date creationDate = document.getDate("creationDate");
//Do what you need to do with your Date object
}
}
});
Помните, чтобы получить этот Date
объект, нужно установить дату, как объяснено в моем ответе из следующего поста:
Редактировать:
Подчеркнут вопрос, чтобы получить метку времени сервера без выполнения каких-либо операций, связанных с базой данных.
Нет способа сделать это, так как это значение метки времени генерируется исключительно серверами Firebase. Другими словами, когда происходит операция записи, генерируется эта временная метка. Вы не можете смоделировать это на клиенте, и это имеет смысл, поскольку вы не можете случайным образом сгенерировать временную метку сервера самостоятельно. Это могут делать только серверы Firebase. Если вам нужна конкретная временная метка, вы должны , а не генерировать ее таким образом. Поскольку это свойство имеет тип Date
, вы можете установить для него любую дату, какую пожелаете. Поэтому вместо того, чтобы позволить Firestore решить, какую временную метку генерировать, установите Date
самостоятельно.