java.time.LocalDateTimeクラスは、タイムゾーンのない日時を扱うクラスです。
LocalDateTimeの特徴
LocalDateTimeは以下の特徴があります。
- Java8で追加された比較的新しいAPIである
- 情報として「年、月、日、時、分、秒、ナノ秒」を持つ
- タイムゾーン情報は持たない
(タイムゾーンを扱いたい場合はZonedDateTimeを使用ください) - イミュータブル immutable(不変)オブジェクトである
- 月は1から12で表す(Calendarクラスは0から11で表す)
java.time.LocalDateTimeの継承・実装
継承クラス
・java.lang.Object
・java.time.LocalDateTime
実装インターフェース
・java.io.Serializable
・java.lang.Comparable<ChronoLocalDateTime<?>>
・java.time.chrono.ChronoLocalDateTime<LocalDate>
・java.time.temporal.Temporal
・java.time.temporal.TemporalAccessor
・java.time.temporal.TemporalAdjuster
導入バージョン
・JDK1.8
LocalDateTimeのAPI
型 | 定数 | 説明 |
---|---|---|
LocalDateTime | MAX | LocalDateTimeの最大値 ※「+999999999-12-31T23:59:59.999999999」 |
LocalDateTime | MIN | LocalDateTimeの最小値 ※「-999999999-01-01T00:00:00」 |
戻値型 | メソッド | 静的 | 説明 |
---|---|---|---|
LocalDateTime | now() | ◯ | デフォルトのタイムゾーン現在日時を取得する |
LocalDateTime | of(int y, int m, int d, int h, int mi) | ◯ | 年月日時分を指定してLocalDateTimeを取得する |
LocalDateTime | of(int y, int m, int d, int h, int mi, int s) | ◯ | 年月日時分秒を指定してLocalDateTimeを取得する |
int | compareTo(LocalDateTime d) | LocalDateTimeを比較する | |
int | getDayOfMonth() | 月の日を取得する(1~31) | |
DayOfWeek | getDayOfWeek() | 曜日を取得する(列挙型DayOfWeek) | |
int | getDayOfYear() | 年の日を取得する(1~366) | |
int | getHour() | 時を取得する(0~59) | |
int | getMinute() | 分を取得する(0~59) | |
Month | getMonth() | 月を取得する(列挙型Month) | |
int | getMonthValue() | 月を取得する(1~12) | |
int | getNano() | ナノ秒を取得する | |
int | getSecond() | 秒を取得する(0~59) | |
int | getYear() | 年を取得する | |
LocalDateTime | minusDays(long days) | 指定した日数を減算した結果を返す | |
LocalDateTime | minusHours(long hours) | 指定した時間を減算した結果を返す | |
LocalDateTime | minusMinutes(long minutes) | 指定した分数を減算した結果を返す | |
LocalDateTime | minusMonths(long months) | 指定した月数を減算した結果を返す | |
LocalDateTime | minusNanos(long nanos) | 指定したナノ秒数を減算した結果を返す | |
LocalDateTime | minusSeconds(long seconds) | 指定した秒数を減算した結果を返す | |
LocalDateTime | minusWeeks(long weeks) | 指定した週数を減算した結果を返す | |
LocalDateTime | minusYears(long years) | 指定した年数を減算した結果を返す | |
LocalDateTime | plusDays(long days) | 指定した日数を加算した結果を返す | |
LocalDateTime | plusHours(long hours) | 指定した時間を加算した結果を返す | |
LocalDateTime | plusMinutes(long minutes) | 指定した分数を加算した結果を返す | |
LocalDateTime | plusMonths(long months) | 指定した月数を加算した結果を返す | |
LocalDateTime | plusNanos(long nanos) | 指定したナノ秒数を加算した結果を返す | |
LocalDateTime | plusSeconds(long seconds) | 指定した秒数を加算した結果を返す | |
LocalDateTime | plusWeeks(long weeks) | 指定した週数を加算した結果を返す | |
LocalDateTime | plusYears(long years) | 指定した年数を加算した結果を返す | |
LocalDate | toLocalDate() | LocalDateの部分を取得する | |
LocalTime | toLocalTime() | LocalTimeの部分を取得する | |
LocalDateTime | withDayOfMonth(int day) | 指定した日を置き換えた結果を返す (指定する日は月の日) | |
LocalDateTime | withDayOfYear(int day) | 指定した日を置き換えた結果を返す (指定する日は年の日) | |
LocalDateTime | withHour(long hour) | 指定した時を置き換えた結果を返す | |
LocalDateTime | withMinute(long minute) | 指定した分を置き換えた結果を返す | |
LocalDateTime | withMonth(long month) | 指定した月を置き換えた結果を返す | |
LocalDateTime | withNano(long nano) | 指定したナノ秒を置き換えた結果を返す | |
LocalDateTime | withSecond(long second) | 指定した秒を置き換えた結果を返す | |
LocalDateTime | withYear(long year) | 指定した年を置き換えた結果を返す | |
boolean | isAfter(LocalDateTime d) | dよりも後の日時の場合はtrueを返す | |
boolean | isBefore(LocalDateTime d) | dよりも前の日時の場合はtrueを返す | |
boolean | isEqual(LocalDateTime d) | dと同じ日時の場合はtrueを返す |
LocalDateTimeサンプル
- (LocalDateTimeの生成)
-
// 現在日時で生成する LocalDateTime now = LocalDateTime.now(); System.out.println(now); → 2023-08-01T16:53:25.897936400 // 日時を数値で指定して生成する LocalDateTime ldt = LocalDateTime.of(2023, 9, 16, 10, 20, 30); System.out.println(ldt); → 2023-09-16T10:20:30
- (フォーマットを指定して現在日時を表示する)
-
LocalDateTime now = LocalDateTime.now(); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); System.out.println(now.format(dtf)); → 2023/08/01 16:53:25
- (日時の加算)
-
// 3日加算 LocalDateTime d = ldt.plusDays(3); // -2年加算 LocalDateTime d = ldt.plusYears(-2); //結果、2年の減算になります
- (日時の減算)
-
// 3日減算 LocalDateTime d = ldt.minusDays(3); // -2年減算 LocalDateTime d = ldt.minusYears(-2); //結果、2年の加算になります
- (日時の書き換え)
-
// 日を当月の25日に設定する LocalDateTime d = ldt.withDayOfMonth(25); // 年を2028年に設定する LocalDateTime d = ldt.withYear(2028);
コメント