#php #firebase #firebase-realtime-database
# #php #firebase #firebase-база данных в реальном времени
Вопрос:
Какой метод использовать в php для генерации метки времени firebase, которая равна firebase.serverValue.timestamp?
Я пытался использовать time()
, по-видимому, это неправильный формат.
Ответ №1:
Если вы используете Google SDK для (Firebase / Firestore), вы можете использовать следующее :
use GoogleCloudCoreTimestamp;
// ....
$stamp = new Timestamp(new DateTime());
Затем сохраните $stamp
в базе данных .. таким образом, вы получите поле, похожее на это
Ответ №2:
Я думаю, что этот поток должен быть обновлен. Я не уверен, что другие ответы все еще действительны, но текущий рекомендуемый способ сделать это, согласно документации Google, заключается в следующем:
use GoogleCloudFirestoreFieldValue;
$timestamp = FieldValue::serverTimestamp()
https://cloud.google.com/firestore/docs/manage-data/add-data
Комментарии:
1. Сработало как шарм
2. Это прямо противоположно тому, что запрашивает OP. Ему нужен объект Timestamp (в PHP), аналогичный тому, который FieldValue serverTimestamp сохраняет в Firestore.
Ответ №3:
firebase.serverValue.timestamp
общедоступная статическая временная МЕТКА окончательной карты
Значение-заполнитель для автоматического заполнения текущей временной метки (время, прошедшее с эпохи Unix, в миллисекундах) серверами баз данных Firebase. Ссылка на документ
Как указано в документации, это в миллисекундах. Фактическое определение временной метки указано в секундах, но в любом случае, чтобы получить фактическую временную метку в миллисекундах в PHP, вы должны
microtime();
Редактировать:
чтобы получить миллиметры из микросекунд (возвращаемых microtime()), вы должны:
$timeparts = explode(" ",microtime());
$currenttime = bcadd(($timeparts[0]*1000),bcmul($timeparts[1],1000));
echo $currenttime;
Комментарии:
1. генерация microtime()
0.59891000 1476645407
, что тоже является неправильным форматом.2. @Basit да, это микротайм, извините, но вы должны перевести его в миллисекунды. Я отредактировал свой ответ
3. хорошо, попробую новый метод, который вы написали .., кстати, пока я попробую это .. нужно ли нам устанавливать часовой пояс UTC?
4. @Basit Если вы посмотрите на документацию
microtime()
, нет. php.net/manual/en/function.microtime.php определение метки времени — это количество секунд, прошедших с эпохи Unix (0:00:00 января 1,1970 GMT), поскольку GMT == UTC вы только что установили.