にAnswer by Hugoをjava.timeを使用して正しいと思わ有益である。しかし、FYIのJoda-Timeプロジェクトはmaintenance modeにあり、チームはjava.timeクラスへの移行をアドバイスしています。 Androidの場合は、下の最後の箇条書きを参照してください。
入力文字列は標準ISO 8601の形式です。 java.timeクラスは、&の文字列を解析するときに標準形式を使用します。したがって、書式設定パターンを指定する必要はありません。
Instant
クラスは、nanoseconds(小数点以下9桁まで)の解像度を持つUTCのタイムライン上の瞬間を表します。
String input = "2017-04-21T17:46:00Z" ;
Instant instant = Instant.parse(input) ;
instant.toString():2017-04-21T17:46:00Z
より柔軟なフォーマットについては、あなたが望むように、OffsetDateTime
オブジェクトに変換あなたが任意offset-from-UTC指定することができました。時間と分で表します。 UTC自体(ゼロのオフセット)が必要なので、定数ZoneOffset.UTC
を使用できます。
OffsetDateTime odt = instant.atOffset(ZoneOffset.UTC) ;
odt.toString():2017-04-21T17:46Z
は、ご希望の形式に合わせて、書式設定のパターンを定義します。 (a)日の名前、月の名前などを翻訳するための人間の言語、および(b)略語、大文字小文字、句読点、区切り記号などの問題を決定する文化的な基準を決定するには、Locale
を指定する必要があります。
DateTimeFormatter f = DateTimeFormatter.ofPattern("hh:mm dd MMM yyyy" , Locale.US) ;
String output = odt.format(f) ;
出力:5:46 2017年4月21日
あなたは、このようなEurope/London
やPacific/Auckland
など地域の壁時計時間のレンズを通して、この同じ瞬間を見たい場合は、時間をかけますゾーンを取得するZonedDateTime
。
は、America/Montreal
、Africa/Casablanca
、又はPacific/Auckland
として、continent/region
の形式でproper time zone nameを指定します。EST
またはIST
またはBST
などの3文字の略語を使用しないでください。標準時ではなく、ユニークではない(!)。
ZoneId z = ZoneId.of("Europe/London") ;
ZonedDateTime zdt = instant.atZone(z) ;
夏時間(DST)のため、時間帯が1時間ずれていることに注意してください。
zdt.toString():2017-04-21T18:46 + 01:00 [ヨーロッパ/ロンドン]
このcode run live at IdeOne.comを参照してください。
java.time
についてjava.timeフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは面倒古いlegacy日時クラスなどjava.util.Date
、Calendar
、& SimpleDateFormat
に取って代わります。
maintenance modeにあるJoda-Timeプロジェクトは、java.timeクラスへの移行を推奨しています。
詳しくはOracle Tutorialをご覧ください。そして、多くの例と説明のためにStack Overflowを検索してください。仕様はJSR 310です。
ここで、java.timeクラスを取得するには?
この作品は '新しいのSimpleDateFormat(DATE_TIME_FORMAT")を返しませんフォーマット(dateTimestamp); '' –
のSystem.out.println(DateTimeZone.getDefault())の出力何;? ' –
@Hugo "Europe/London" –