java.time、java.util、java.sql、および java.text パッケージには、日付と時刻を表すクラスが含まれています。 Java で日付を扱うには、次のクラスが重要です。
Java 8 日付/時刻 API
Java では、Java 8 以降、新しい日付と時刻 API が導入されました。java.time パッケージには、Java 8 の日付と時刻クラスが含まれています。
- java.time.LocalDate クラス
- java.time.LocalTime クラス
- java.time.LocalDateTime クラス
- java.time.MonthDay クラス
- java.time.OffsetTime クラス
- java.time.OffsetDateTime クラス
- java.time.Clock クラス
- java.time.ZonedDateTime クラス
- java.time.ZoneId クラス
- java.time.ZoneOffsetクラス
- java.time. Year クラス
- java.time. YearMonth クラス
- java.time.Period クラス
- java.time.Duration クラス
- java.time.Instant クラス
- java.time.DayOfWeek 列挙型
- java.time.Month列挙型
従来の日付/時刻 API
ただし、古典的または古い Java Date API も便利です。従来の日付と時刻クラスのリストを見てみましょう。
- java.util.Date クラス
- java.sql.Date クラス
- java.util.Calendarクラス
- java.util.GregorianCalendar クラス
- java.util.TimeZoneクラス
- java.sql.Time クラス
- java.sql.Timestamp クラス
日付と時刻の書式設定
Java では、次のクラスを使用して日付と時刻をフォーマットできます。
Java 日付と時刻 API
Java は、java.time および java.util という 2 つのパッケージを利用して日付と時刻の機能を提供します。パッケージ java.time は Java 8 で導入され、新しく導入されたクラスは従来の java.util.Date クラスと java.util.Calendar クラスの欠点を克服しようとします。
古典的な日付時刻 API クラス
Java 8 リリース前の主なクラスは次のとおりです。
arpコマンド
Java.lang.システム: このクラスは、現在時刻をミリ秒単位で返す currentTimeMillis() メソッドを提供します。 1970 年 1 月 1 日からの現在の日付と時刻がミリ秒単位で表示されます。
java.util.Date: 特定の瞬間をミリ秒単位で示すために使用されます。
java.util.Calendar: これは、インスタンス間で変換し、さまざまな方法でカレンダー フィールドを操作するためのメソッドを提供する抽象クラスです。
java.text.SimpleDateFormat: これは、事前定義された方法またはユーザー定義のパターンで日付をフォーマットおよび解析するために使用されるクラスです。
java.util.TimeZone: これはタイムゾーンのオフセットを表し、夏時間も計算します。
既存の日付/時刻 API の欠点
Java 8 の新しい日時 API
新しい日付 API は、従来のクラスに関する上記の欠点を克服するのに役立ちます。これには次のクラスが含まれます。
java.time.LocalDate: これは ISO カレンダーの年-月-日を表し、時刻のない日付を表すのに役立ちます。生年月日や結婚日など、日付のみの情報を表すために使用できます。
java.time.LocalTime: 時間内のみの対応となります。これは、映画の上映時間や地元の図書館の開館時間と閉館時間など、人間ベースの時刻を表すのに役立ちます。
java.time.LocalDateTime: タイムゾーンなしで、日付と時刻の両方を処理します。これは LocalDate と LocalTime を組み合わせたものです。
java.time.ZonedDateTime: LocalDateTime クラスと ZoneId クラスで指定されたゾーン情報を組み合わせます。これは、タイムゾーン情報とともに完全な日付タイムスタンプを表します。
java.time.OffsetTime: タイム ゾーン ID を使用せず、グリニッジ/UTC からの対応するタイム ゾーン オフセットで時間を処理します。
java.time.OffsetDateTime: タイム ゾーン ID なしで、グリニッジ/UTC からの対応するタイム ゾーン オフセットを使用して日付と時刻を処理します。
java.time.Clock : 任意のタイムゾーンでの現在の瞬間、日付、時刻へのアクセスを提供します。 Clock クラスの使用はオプションですが、この機能を使用すると、他のタイムゾーン、または時間が変化しない固定クロックを使用してコードをテストできます。
java.time.Instant : これはタイムライン上のナノ秒の開始 (EPOCH 以降) を表し、マシン時間を表すタイムスタンプを生成するのに役立ちます。エポックの前に発生する瞬間は負の値を持ち、エポックの後に発生する瞬間は正の値を持ちます。
java.time.Duration : 2 つの瞬間の差は秒またはナノ秒で測定され、年、月、日などの日付ベースの構成要素は使用されませんが、このクラスは日、時間、分に変換するメソッドを提供します。
java.time.Period : これは、日付ベースの値 (年、月、日) の日付間の差異を定義するために使用されます。
java.time.ZoneId : タイムゾーン識別子を記述し、Instant と LocalDateTime の間で変換するためのルールを提供します。
java.time.ZoneOffset : グリニッジ/UTC 時間からのタイム ゾーン オフセットを記述します。
java.time.format.DateTimeFormatter : さまざまな定義済みフォーマッタが用意されていますが、独自のフォーマッタを定義することもできます。日付時刻値を解析してフォーマットするための parse() または format() メソッドがあります。