# #javascript #firebase #datetime #google-cloud-firestore
Вопрос:
Я хочу использовать что-то вроде serverTimestamp
метода на стороне клиента, но для этого мне нужно включить пакет firebase-admin, который увеличит размер пакета клиента.
import * as firebaseAdmin from "firebase-admin";
if (!firebaseAdmin.apps.length) {
firebaseAdmin.initializeApp();
}
const firebaseTimestamp = firebaseAdmin.firestore.FieldValue.serverTimestamp();
const initDate = firebaseAdmin.firestore.Timestamp.fromDate(
new Date(Date.UTC(0, 0, 0, 0, 0, 0))
);
Существует ли какое-либо облегченное решение для доступа к методам временных меток firebase со стороны клиента?
Я не уверен, смогу ли я отказаться servertimestamp
и пойти new Date()
, так как это связано с текущим часовым поясом. Я хочу хранить время в Firestore (со стороны клиента), которое не относится ни к какому часовому поясу, и позже я смогу запросить firestore на основе этого параметра даты.
ссылка: https://firebase.google.com/docs/reference/node/firebase.firestore.Отметка времени
Комментарии:
1. Вы могли бы использовать
Date.now()
, который всегда возвращает количество миллисекунд, прошедших с 1970-бла-бла UTC2. Если я сохраню его как отметку времени, то как мне выполнить запрос на основе форматов дат, таких как выборка строк между датами A и B?
Ответ №1:
Вы не должны импортировать пакет SDK администратора Firebase на стороне клиента. Для запуска требуется учетная запись службы, у нее есть права администратора, т. е. она не подчиняется никаким правилам безопасности и имеет полный доступ к вашему проекту Firebase.
Вы также можете добавить метку времени с помощью клиентского SDK:
firebase.firestore.FieldValue.serverTimestamp()
Вы можете прочитать больше об этом в документации
В качестве альтернативы вы можете использовать временные метки UNIX, и у вас не будет проблем с часовым поясом.
Это количество секунд, прошедших с эпохи Unix, за вычетом високосных секунд; эпоха Unix составляет 00:00:00 UTC 1 января 1970 года;
const timestamp = Date.now()
Затем вы можете использовать объект даты JS для его форматирования в любом формате.
Комментарии:
1. Затем вы можете использовать объект даты JS для форматирования его в любом формате. > Как я могу сохранить объект даты UTC в Firestore?
2. Кроме того, Date.now возвращает миллисекунды, а не секунды
3. @GorvGoyl
new Date(Date.now()).toUTCString()
, чтобы получить строку времени UTC. Кроме того, вы можете просто сохранить числовую метку времени в базе данных, чтобы упростить запрос. Вы можете отформатировать его с помощью объекта Даты в любом другом месте.