首页 > 解决方案 > 将 Firebase 时间戳转换为当前时间或其他可用形式

问题描述

我正在尝试使用 Firebase 的时间戳,但我不了解 JavaScript 的文档。您如何将检索到的值转换为时间(即下午 4:00)这是我一直在使用的页面:https ://firebase.google.com/docs/database/web/offline-capabilities#server-timestamps

看来您.set(firebase.database.ServerValue.TIMESTAMP);用来设置时间戳和

 var offsetRef = firebase.database().ref(".info/serverTimeOffset");
 offsetRef.on("value", function(snap) {
    var offset = snap.val();
    var estimatedServerTimeMs = new Date().getTime() + offset;
    });

检索时间戳和客户端的时钟偏差。由于您正在检索由 Firebase 服务器确定的“用于自动填充当前时间戳(自 Unix 纪元以来的时间,以毫秒为单位)的占位符值”,因此您似乎无法按照人们在此处询问的方式进行操作我会做到的:Firebase TIMESTAMP to date and Time

var timestamp = '1452488445471';
var myDate = new Date(timestamp);

我真的不明白答案:

 fb.ref("/.info/serverTimeOffset").on('value', function(offset) {
   var offsetVal = offset.val() || 0;
   var serverTime = Date.now() + offsetVal;
  });

这就是我所拥有的:

 let timestamp;

 let timestampRef = firebase.database().ref("server");

timestampRef.set(firebase.database.ServerValue.TIMESTAMP);
timestampRef.on("value", function(snap) {
  let offset = snap.val();
  let estimatedServerTimeMs = new Date().getTime() + offset;
  console.log("time stamp: ", timestampRef);
  console.log("offset: ", offset);
  console.log("estimatedServerTimeMs: ", estimatedServerTimeMs);
 });

标签: javascriptfirebasefirebase-realtime-databasetimestamp

解决方案


你把事情复杂化了。您不需要任何偏移量来读取服务器时间戳令牌写入的时间。日期值表示为自 unix 纪元以来的毫秒数,它将仅显示为一个整数,您可以new Date()在服务器解释它之后提供给它。


推荐阅读