web-dev-qa-db-ja.com

Firebaseタイムスタンプを日付と時刻に変換する方法

私はfirebaseタイムスタンプから次のように日付と時刻を取得しようとしました:

 Date date=new Date(timestamp*1000);
 SimpleDateFormat sfd = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
 sfd.format(date);

しかし、私は次のような結果を得ています:

:02-02-48450 04:21:54
:06-02-48450 10:09:45
:07-02-48450 00:48:35

ご覧のとおり、年は私たちの生活ではありません。

だから、私がこれを修正するのを手伝ってください。

10
Prathmesh Patil

タイムスタンプ14667699379142016-06-24 12:05:37 UTCと同じです。問題は、実際の理由なしにタイムスタンプを1000倍することです。その結果、1466769937914000が得られます。そして、それは48450-02-01 21:51:54 UTCに等しいので、得られる結果は技術的に正しく、すべて正常に機能しています。間違った入力データをコードに入力するだけで、修正する必要があるのはこれだけです。解決策は単に乗算を削除することであり、あなたはすべてうまくいくはずです:

   SimpleDateFormat sfd = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
   sfd.format(new Date(timestamp))
23
Marcin Orlowski

Firebaseドキュメント によると、JSONで使用できるタイプは次のとおりです。

  • String
  • Long
  • Double
  • Boolean
  • Map<String, Object>
  • List<Object>

別の Stack Overflow post を引用して、エポックの代わりに JSON日付文字列形式yyyy-MM-dd'T'HH:mm:ss.SSSZを使用することをお勧めしますタイムスタンプ。

13352055435112012-04-23T18:25:43.511Zを比較すると、次のことがわかります。

  • 人間が読めるだけでなく簡潔でもあります
  • 正しくソートされます
  • 秒の小数部が含まれているため、年表の再構築に役立ちます
  • ISO 8601に準拠

ISO 8601は10年以上にわたって国際的に確立されており、 W3CRFC3339 、および [ 〜#〜] xkcd [〜#〜]

3
JP Ventura

日付については、次のコードを使用できます。

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(time);
String date = DateFormat.format("dd-MM-yyyy", calendar).toString();

時間:

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(time);
String date = DateFormat.format("hh:mm", calendar).toString();
0
MrCoder

TimestampからDateインスタンスを取得する場合

TimestampからDateオブジェクトのみを取得する必要がある場合、Timestampインスタンスには、Dateインスタンスを返すtoDate()メソッドが付属しています。

明確にするために:

Date javaDate = firebaseTimestampObject.toDate()
0
Felix Favour