2016-10-15 8 views
0

私はAndroidの初心者です。朝(6am)、午後(12pm)、夜(9pm)の気象情報を表示するアプリケーションを作成し、同じ日の 私はこのウェブサイトからJSONデータを使用しています。 http://api.openweathermap.org/data/2.5/forecast?q=kangra,india&appid=41352ca35dd1be72cc7d9f47351d1b41&units=metric リンクに記載されているタイムスタンプはUTCで、現地時間に合わせて天気情報を表示するのに問題があります(天気情報は午前6時12分、午後6時現地時間) 誰でも私の問題を解決することができます。このJSON天気データ(エポックタイム)を現地時間に変換するには

+0

リンクするのではなく、記事自体に関連するスニペットを含めてください。 –

+0

[Unix epoch time to Java Dateオブジェクト]の可能な複製(http://stackoverflow.com/questions/535004/unix-epoch-time-to-java-date-object) –

答えて

0

上記の日付形式は、epoch format (or Unix time)です。あなたは(this SO answerからのように)、APIから返さdateintまたはlong値である

Date expiry = new Date(Long.parseLong(date)); 

を行うことができますJavaのDateに変換するには

は、1476576000

0

のようにあなたののドキュメントを読む必要がありますデータの意味を確認するためのデータフィード。

私はdtフィールドはUTCにおける1970-01-01T00:00:00のエポック全体の秒数であることを推測に行きます。

例データ:

"DT":1476576000

Instantクラスはnanoseconds(最大9個の数字の分解能でUTCで、タイムライン上のモーメントを表します小数部分)。

Instant instant = Instant.ofEpochSecond (1476576000L); 

instant.toString():2016-10-16T00:00:00Z

あなたはどの時間帯にそれを調整することができます。 continent/regionの形式でproper time zone nameを指定します。 ESTまたはISTのような3〜4文字の略語は、標準化されておらず、ユニークではない(!)ため、絶対にタイムゾーンではないので使用しないでください。 ZoneIdを適用してZonedDateTimeを取得します。

ZoneId zoneKolkata = ZoneId.of("Asia/Kolkata"); 
ZonedDateTime zdtKolkata = instant.atZone(zoneKolkata); 

zdtKolkata.toString():2016-10-16T05:30 + 05:30 [アジア/コルカタ]

あなたは他の時間帯のために再びそうすることができます。

ZoneId zoneMontreal = ZoneId.of("America/Montreal"); 
ZonedDateTime zdtMontreal = instant.atZone(zoneMontreal); 

zdtMontreal。toString():2016-10-15T20:00-04:00 [アメリカ/モントリオール]

これらの日付時刻オブジェクト(instantzdtKolkatazdtMontreal)のすべての3つはすべての非常に同じ瞬間あり、タイムライン上の同じ単一の点。唯一の違いは、異なる地域のwall-clock timeを見ることです。

java.time

についてjava.timeフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは、java.util.Date,.Calendar,& java.text.SimpleDateFormatなどの面倒な古いlegacy日時クラスに取って代わります。

Joda-Timeプロジェクトは、今maintenance modeで、java.timeへの移行をアドバイスします。

詳しくはOracle Tutorialをご覧ください。そして、多くの例と説明のためにStack Overflowを検索してください。仕様はJSR 310です。

ここで、java.timeクラスを取得するには?

  • Java SE 8SE 9以降
    • 内蔵しています。
    • バンドルされた実装の標準Java APIの一部です。
    • Java 9には、いくつかのマイナーな機能と修正が加えられています。
  • Java SE 6SE 7
    • java.time機能の多くはThreeTen-BackportのJava 6 & 7に戻って、移植されます。
  • Android
    • ThreeTenABPプロジェクトはThreeTen-バックポート具体的にAndroidのため(上記)を適応させます。
    • How to use…を参照してください。

ThreeTen-Extraプロジェクトでは、追加のクラスでjava.timeを拡張します。このプロジェクトは、将来のjava.timeへの追加の可能性を証明する土台です。ここでは、IntervalYearWeekYearQuartermoreなどの便利なクラスがあります。

関連する問題