2017-04-05 18 views

答えて

0

以下を使用できます。 ServerValue.TIMESTAMPが文字列として返された場合

Calendar cal = Calendar.getInstance(); 

cal.setTimeInMillis(ServerValue.TIMESTAMP); 
SimpleDateFormat fmt = new SimpleDateFormat("dd MM yyyy",Locale.US); 
fmt.format(cal.getTime()); //This returns a string formatted in the above way. 

することは、あなたが日付を取得するためにServer.TIMESTAMPを使用することはできませんLong.parseLong(Server.TIMESTAMP);

+0

ServerValue.TIMESTAMPはマップ<文字列、文字列>であるので、それは動作しませんその動作していない – sunny

+0

NOPSを入力し、Uは次のようにロングに直接マップタイプを変換することはできません – sunny

1

を使用して文字列を解析することができます。 DOCは言う:

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

によって決定される。これは、そのときあなたはsetValue()またはupdateChildren()意味しますMapにこの定数を設定して、そのノードにエポック時間を代入するようサーバーに指示することができます。たとえば:

mRef = FirebaseDatabase.getInstance().child("whatever/path/in/your/database"); 
mRef.setValue(Server.TIMESTAMP); 

これは、これは、この答えを書きながら、私はフェッチ現在のエポックタイムである149141530600.のようになります。その<your Firebase>/whatever/path/in/your/databaseに長いを設定します。これは、1970年1月1日から値をコピーしてから経過したミリ秒数に相当します。

Long time = dataSnapshot.getValue(Long.class); 
Calendar calendar = GregorianCalendar.getInstance(); 
calendar.setTimeInMillis(time); 

あなただけのサーバーが(それをデータベースに保存することは無意味である)に設定された時間をしたい場合は、あなたが使用することができます:あなたは、そのノードにリスナーを持っている場合次に、あなたが使用してカレンダを取得することができます特別なノード:

`FirebaseDatabase.getInstance().getReference(".info/serverTimeOffset");` 

リスナーこのノードには、デバイスの時刻とサーバの時刻との間のオフセット近似を表すDoubleを返します。その後、使用してCalendarを設定することができます。

calendar.setTimeInMillis(System.currentTimeMillis() + offset);

関連する問題