tl; dr
java.time.Instant
クラスを使用して、UTCの瞬間を表す標準ISO 8601形式のテキストを解析します。
Instant.parse( "2010-10-02T12:23:23Z" )
ISO 8601
この形式は、日時文字列形式のISO 8601標準で定義されています。
両方とも:
…文字列の解析と生成には、デフォルトでISO 8601形式を使用します。
古いjava.util.Date /.Calendarとjava.text.SimpleDateFormatクラスは、厄介で、混乱し、欠陥があることで有名なので、通常は使用しないでください。相互運用に必要な場合は、相互に変換できます。
java.time
Java 8以降には、新しいjava.timeフレームワークが組み込まれています。JSR 310で定義されたJoda- Timeに触発され、ThreeTen-Extraプロジェクトによって拡張されました。
Instant instant = Instant.parse( "2010-10-02T12:23:23Z" ); // `Instant` is always in UTC.
古いクラスに変換します。
java.util.Date date = java.util.Date.from( instant ); // Pass an `Instant` to the `from` method.
タイムゾーン
必要に応じて、タイムゾーンを割り当てることができます。
ZoneId zoneId = ZoneId.of( "America/Montreal" ); // Define a time zone rather than rely implicitly on JVM’s current default time zone.
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId ); // Assign a time zone adjustment from UTC.
変換。
java.util.Date date = java.util.Date.from( zdt.toInstant() ); // Extract an `Instant` from the `ZonedDateTime` to pass to the `from` method.
ジョーダタイム
更新:Joda-Timeプロジェクトがメンテナンスモードになりました。チームは、java.timeクラスへの移行を推奨しています。
Joda-Time 2.8のコード例を以下に示します。
org.joda.time.DateTime dateTime_Utc = new DateTime( "2010-10-02T12:23:23Z" , DateTimeZone.UTC ); // Specifying a time zone to apply, rather than implicitly assigning the JVM’s current default.
古いクラスに変換します。juDateにはタイムゾーンを割り当てることができないため、割り当てられたタイムゾーンは変換で失われることに注意してください。
java.util.Date date = dateTime_Utc.toDate(); // The `toDate` method converts to old class.
タイムゾーン
必要に応じて、タイムゾーンを割り当てることができます。
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime dateTime_Montreal = dateTime_Utc.withZone ( zone );
java.timeについて
java.timeのフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは面倒古い取って代わるレガシーのような日付時刻クラスをjava.util.Date
、Calendar
、& SimpleDateFormat
。
ジョダタイムプロジェクトは、今でメンテナンスモードへの移行をアドバイスjava.timeのクラス。
詳細については、Oracleチュートリアルを参照してください。また、スタックオーバーフローで多くの例と説明を検索してください。仕様はJSR 310です。
java.timeオブジェクトをデータベースと直接交換することができます。JDBC 4.2以降に準拠したJDBCドライバーを使用します。文字列もクラスも必要ありません。java.sql.*
java.timeクラスはどこで入手できますか?
ThreeTen-エクストラプロジェクトでは、追加のクラスでjava.timeを拡張します。このプロジェクトは、java.timeに将来追加される可能性があることを証明する場です。あなたはここにいくつかの有用なクラスのような見つけることがInterval
、YearWeek
、YearQuarter
、および多くを。