私はfirebaseでangularjsを使用しています。
$scope.createdDate = new Date();
クライアントの時刻を使用しますが、クライアント側の時刻が異なる可能性があるため、FirebaseServerの現在の時刻を使用したいと思います。どうすればこれを角度で行うことができますか?
Firebase3の場合は、firebase.database.ServerValue.TIMESTAMPを使用してください
$scope.createdDate = firebase.database.ServerValue.TIMESTAMP
印刷するとき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: Firebaseへの1回の呼び出しを使用するより良い方法が見つかりました
firebase.database().ref('/.info/serverTimeOffset')
.once('value')
.then(function stv(data) {
console.log(data.val() + Date.now());
}, function (err) {
return err;
});
Firebaseからサーバー時間を追加する方法について このFirebaseドキュメント を指摘してくれたJonasGrumannに感謝します。
// Get created date from Firebase servers
var createdDate = new Firebase('https://somedomain.firebaseIO.com/post/createDate');
createdDate.set(Firebase.ServerValue.TIMESTAMP);