我在聊天应用程序中使用firebase.在聊天对象中,我使用Firebase.ServerValue.TIMESTAMP
方法添加时间戳.
我需要使用此时间戳在聊天应用程序中显示消息接收时间.
如果它是当前时间我只需要显示时间.我需要显示日期和时间或仅显示日期.
我使用以下代码转换Firebase时间戳,但我没有得到实际时间.
var timestamp = '1452488445471'; var myDate = new Date(timestamp*1000); var formatedTime=myDate.toJSON();
请为此问题提出解决方案
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; });
事实上,它只对我有用
firebase.database.ServerValue.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); });
文件
将时间戳附加到数据库更新的正确方法是在请求中附加占位符值.在下面的示例中,Firebase将createdAt
使用时间戳替换该属性:
firebaseRef = firebase.database().ref(); firebaseRef.set({ foo: "bar", createdAt: firebase.database.ServerValue.TIMESTAMP });
根据文档,该值为firebase.database.ServerValue.TIMESTAMP
:"Firebase数据库服务器自动填充当前时间戳(自Unix纪元以来的时间,以毫秒为单位)的占位符值."