2017-02-01 6 views
0

firebaseリアルタイムデータベースに接続されているアンドロイドプロジェクトに取り組んでいます。とにかく、どこかにタイムスタンプを入れています。Firebase ServerValue.TIMESTAMPを呼び出すときに返される値

... 
.... 
map2.put("time", ServerValue.TIMESTAMP); 
message_root.updateChildren(map2); 

それから私は、実装に

... 
    ... 
    chat_time = (Long)((DataSnapshot)i.next()).getValue(); 
    Calendar calendar = Calendar.getInstance(); 
    int a = calendar.get(Calendar.HOUR_OF_DAY); 
    int b = calendar.get(Calendar.MINUTE); 
    int c = calendar.get(Calendar.SECOND); 

正常に何の問題も、このデータを呼び出していないのです。問題は、この値がスマートフォンとエミュレータでは違うことを理解できなかったことです。 エミュレータの同じ値の場合、ファイヤーベースのコンソールから見るとリアルタイムデータベースの値は同じですが、スマートフォンの20:16に17:16などが表示されます。 最後に、実際の価値は何ですか?この値は国によって変わりますか?しかし、私のスマートフォンとエミュレータは同じ国にあります。私は混乱しています。

+0

私は、シミュレータの時間が3時間前に表示されていることに気付きました。それですべてがうまくいくように見えますが、どうなっていますか?最終的にデータベースに1つの値を格納します –

答えて

1

Firebase Reference Docsによると、ServerValue.TIMESTAMPは次のとおりです。

自動移入現在のタイムスタンプ(ミリ秒単位でUNIXエポック時間 、)のプレースホルダ値Firebaseデータベース サーバで。

あなたの質問を読んだとき、私はエミュレータで試してみることにしました。エミュレータと実際のデバイスの両方に同じ値を与えました:私の国(GMT + 2)の現在の時間。

また、デバイスの時刻を変更しようとしました。しかし、データベースに投稿された値は現在の時刻です。 その後、Firebaseコンソールのプロジェクト設定でタイムゾーンを変更しようとしました。しかし、価値はまだ同じです。

投稿された価値は同じだが、異なる価値があると言っても、この価値をどのように表示しているか教えてください。

+1

うーん、私は私の問題を解決しました。実際のところ、私のエミュレータが実際のデバイスから3時間遅れて戻ってきたので、本当の時間が表示されます。それでは問題はなく、デバイス時間に応じて表示されます。良い、私はそれが好きです。 –

関連する問題