我在使用 angularjs 和 firebase 时使用
$scope.createdDate = new Date();
它使用客户端上的时间,但我想使用 Firebase 服务器的当前时间,因为客户端时间可能会有所不同。我怎样才能有 Angular 地解决这个问题?
最佳答案
当你打印 firebase.database.ServerValue.TIMESTAMP
时,它会给你这个对象 {.sv: "timestamp"}
要在客户端上获取 firebase 服务器的时间戳,您首先需要将值写入到服务器,然后读取该值。
firebase.database().ref('currentTime/').update({ time: firebase.database.ServerValue.TIMESTAMP })
.then(function (data) {
firebase.database().ref('currentTime/')
.once('value')
.then(function (data) {
var t = data.val()['time'];
console.log('server time: ', t);
}, function serverTimeErr(err) {
console.log('coulnd nt reach to the server time !');
});
}, function (err) {
console.log ('set time error:', err)
});
我认为必须有一种更简单的方法来直接从客户端读取服务器时间戳。
编辑 1: 刚刚找到一种更好的方法,使用 1 次调用 firebase
firebase.database().ref('/.info/serverTimeOffset')
.once('value')
.then(function stv(data) {
console.log(data.val() + Date.now());
}, function (err) {
return err;
});
关于javascript - 如何从 Firebase 获取服务器时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24202641/