我正在为我的聊天应用程序使用Firebase。在Chat对象中,我使用Firebase.ServerValue.TIMESTAMP
方法添加时间戳。
我需要使用此时间戳在我的聊天应用程序中显示消息接收时间。
如果是当前时间,我只需要显示时间。如果有天差,我需要显示日期和时间,或者只显示日期。
我使用了以下代码来转换Firebase时间戳,但我没有获得实际时间。
var timestamp = '1452488445471';
var myDate = new Date(timestamp*1000);
var formatedTime=myDate.toJSON();
请为这个问题提出解决方案
22条答案
按热度按时间ao218c7q1#
Timestamp
是一个对象:pkln4tw62#
Firebase.ServerValue.TIMESTAMP不是实际的时间戳,它是一个常量,如果您将其设置为某个变量,它将被服务器中的实际值替换。
如果您希望获得服务器时间,则可以使用以下代码
chhkpiq43#
事实上,它只有在我使用的时候才起作用
在命名空间上多了一个“数据库”。
nuypyhwy4#
对于那些正在寻找Firebase Firestore等价物的用户。它是
例如:
Docs
fjnneemd5#
在Firebase内部,函数按如下方式转换时间戳:
此处的文档https://firebase.google.com/docs/reference/js/firebase.firestore.Timestamp
s4n0splo6#
我知道Firebase在
{seconds: '', and nanoseconds: ''}
中给出了转换为日期的时间戳,您只需做:然后
date.toDate()
=>它返回日期。balp4ylt7#
对于来自Google的新一代数据库FiRestore,下面的代码将简单地帮助您解决这个问题。
gblwokeq8#
Firebase新版本解决方案(2016年1月后)
将时间戳附加到数据库更新的正确方法是在请求中附加占位符值。在下面的示例中,Firebase将用时间戳替换
createdAt
属性:根据documentation,值
firebase.database.ServerValue.TIMESTAMP
是:“由Firebase数据库服务器自动填充当前时间戳(自Unix时代以来的时间,以毫秒为单位)的占位符值。”pw136qt29#
下面是一个将值从Firebase Timestamp类型转换为JS Date的安全方法,如果该值不是Timestamp,则该方法会按原样返回该值
适用于7/8/9角
wwodge7n10#
使用Firebase Firestone 18.0.1(com.google.Firebase.Timestamp)
c3frrgcw11#
这很简单。使用该函数获取服务器时间戳,单位为毫秒仅一次:
现在你可以在任何地方使用它,就像这样:
为什么使用这种方式?
根据最新的Firebase文档,您应该将Firebase时间戳转换为毫秒。因此您可以使用下面的
estimatedServerTimeMs
变量:虽然Firebase.datase.ServerValue.TIMESTAMP要准确得多,而且对于大多数读/写操作来说也更可取,但有时估计客户端相对于Firebase实时数据库服务器的时钟偏差可能很有用。您可以将回调附加到位置/.info/serverTimeOffset,以获取Firebase实时数据库客户端添加到本地报告时间(以毫秒为单位的纪元时间)以估计服务器时间的值(以毫秒为单位)。请注意,此偏移量的准确性可能会受到网络延迟的影响,因此主要用于发现时钟时间中的较大(>1秒)差异。
https://firebase.google.com/docs/database/web/offline-capabilities
e0bqpujr12#
试试这个,
xwbd5t1u13#
new Date(timestamp.toDate()).toUTCString()
6yt4nkrj14#
dddzy1tm15#