将 Firebase 时间戳转换为当前时间或其他可用形式
Posted
技术标签:
【中文标题】将 Firebase 时间戳转换为当前时间或其他可用形式【英文标题】:Convert Firebase Timestamp to current time or other useable form 【发布时间】:2019-04-20 16:29:29 【问题描述】:我正在尝试使用 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);
);
【问题讨论】:
【参考方案1】:你把事情复杂化了。您不需要任何偏移量来读取服务器时间戳令牌写入的时间。表示为自 unix 纪元以来的毫秒数的日期值将仅显示为一个整数,您可以在它被服务器解释后将其提供给 new Date()
。
【讨论】:
与 new Date().getTime() 相比,精度有差异吗?当我记录它们时,它们似乎具有可比性。 您可能会失去时间戳的纳秒精度。以上是关于将 Firebase 时间戳转换为当前时间或其他可用形式的主要内容,如果未能解决你的问题,请参考以下文章
如何将选定的时间戳转换为firebase服务器时间戳android
将 Firebase Firestore 时间戳转换为日期(Swift)?