Firebase TIMESTAMP 到日期和时间

IT技术 javascript angularjs firebase
2021-02-11 17:41:40

我正在将 firebase 用于我的聊天应用程序。在聊天对象中,我使用Firebase.ServerValue.TIMESTAMP方法添加时间戳

我需要使用此时间戳在我的聊天应用程序中显示消息接收时间。

如果是当前时间,我只需要显示时间。它有天差,我需要显示日期和时间或只显示日期。

我使用以下代码转换 Firebase 时间戳,但没有得到实际时间。

var timestamp = '1452488445471';
var myDate = new Date(timestamp*1000);
var formatedTime=myDate.toJSON();

请提出此问题的解决方案

6个回答

Firebase.ServerValue.TIMESTAMP不是实际时间戳,它是常量,如果您将它设置为某个变量,它将被服务器中的实际值替换。

mySessionRef.update({ startedAt: Firebase.ServerValue.TIMESTAMP });
mySessionRef.on('value', function(snapshot){ console.log(snapshot.val()) })
//{startedAt: 1452508763895}

如果你想获得服务器时间,那么你可以使用以下代码

  fb.ref("/.info/serverTimeOffset").on('value', function(offset) {
    var offsetVal = offset.val() || 0;
    var serverTime = Date.now() + offsetVal;
  });
如果你这样做console.log(new Date(snapshot.val())),你会看到日期作为一个字符串。var date = new Date(snapshot.val())会给你一个对象中的日期,你可以调用有用的函数:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
2021-03-20 17:41:40

时间戳是一个对象

timestamp= {nanoseconds: 0,
seconds: 1562524200}

console.log(new Date(timestamp.seconds*1000))

我认为这就是我们要求的用户
2021-03-28 17:41:40
完全有效并返回日期 - 日(字母)月(字母)日期(数字)年(数字)时间(hh:mm)和时区(GMT + ..)。谢谢
2021-04-11 17:41:40

事实上,它只在使用时对我有用

firebase.database.ServerValue.TIMESTAMP

在命名空间上多了一个“数据库”。

@AyazAhmadTarar 如果您使用的是 angular,可以简单地使用它们的内置管道,例如“Date”,或者使用 angular2-moment 来轻松转换时间戳
2021-03-16 17:41:40
但它使用像 1486106680368 这样的格式,我如何将其转换为日期和时间
2021-03-20 17:41:40
@WilliamWu 但它会使用 CLIENT 时间戳......不是吗?firebase ServerValue.TIMESTAMP 确保它是来自服务器的“真实”时间。
2021-03-25 17:41:40

Firebase 函数内部转换时间戳,如下所示:

timestampObj.toDate()
timestampObj.toMillis().toString()

此处的文档https://firebase.google.com/docs/reference/js/firebase.firestore.Timestamp

对于那些正在寻找 Firebase Firestore等效项的人。它是

firebase.firestore.FieldValue.serverTimestamp()

例如

firebase.firestore().collection("cities").add({
    createdAt: firebase.firestore.FieldValue.serverTimestamp(),
    name: "Tokyo",
    country: "Japan"
})
.then(function(docRef) {
    console.log("Document written with ID: ", docRef.id);
})
.catch(function(error) {
    console.error("Error adding document: ", error);
});

文档

我正在尝试使用此解决方案,但是出现以下错误 - ReferenceError: firebase is not defined。我正在使用 js
2021-03-17 17:41:40
Rahul,听起来您没有安装或加载 firebase 库。你使用的是网页版还是 Node JS 版?firebase.google.com/docs/firestore/quickstart
2021-03-27 17:41:40
我发现通过将新字段名称“createdAt”添加到“时间戳”值,它会自动为所有文档创建时间戳
2021-04-14 17:41:40