他の回答は正しいですが、現在は古くなっています。それらは、現在java.timeフレームワークに取って代わられている厄介な古いクラスを使用します。
java.timeの使用
入力文字列は、たまたまISO8601標準フォーマットに準拠しています。したがって、java.timeクラスは文字列の解析/生成時にデフォルトでISO 8601を使用するため、フォーマットパターンを指定する必要はありません。
入力文字列にはUTCからのオフセットが含まれているため、として解析しますOffsetDateTime。
String input = "2010-12-15T16:26:49.841-08:00" ;
OffsetDateTime odt = OffsetDateTime.parse( input );
単なるUTCからのオフセットではなく、特定のタイムゾーンを念頭に置いている場合は、それを適用します。
ZoneId zoneId = ZoneId.of( "America/Los_Angele" );
ZonedDateTime zdt = odt.atZone( zoneId );
GregorianCalendar
などの古い日時クラスは避けてくださいGregorianCalendar。ただし、java.time用にまだ更新されていない古いコードと相互運用する必要がある場合は、変換できます。変換のために古いクラスに追加された新しいメソッドを使用します。詳細と気の利いた図については、私の質問と回答を参照してください。
Calendar cal = java.util.GregorianCalendar.from( zdt ); // Do such conversions out of java.time only if absolutely necessary.
java.timeについて
java.timeフレームワークは、 Java8以降に組み込まれています。java.util.Dateこれらのクラスは、、、、などの古い厄介な日時クラスに取って代わり.Calendarますjava.text.SimpleDateFormat。
現在メンテナンスモードになっているJoda -Timeプロジェクトは、java.timeへの移行をアドバイスします。
詳細については、 Oracleチュートリアルを参照してください。そして、StackOverflowで多くの例と説明を検索してください。
java.time機能の多くはThreeTenのJava6および7にバックポートされています-バックポートされ、さらにThreeTenABPのAndroidに適合されています。
ThreeTen -Extraプロジェクトは、追加のクラスでjava.timeを拡張します。このプロジェクトは、java.timeに将来追加される可能性のある試験場です。ここには、、、などの便利なクラスがIntervalあります。YearWeekYearQuarter