Временная метка Firebase в php

#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 вы только что установили.