[API] java.time.LocalDateTimeクラス

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

【主要定数】
定数説明
LocalDateTimeMAXLocalDateTimeの最大値
※「+999999999-12-31T23:59:59.999999999」
LocalDateTimeMINLocalDateTimeの最小値
※「-999999999-01-01T00:00:00」
【主要メソッド】
戻値型メソッド静的説明
LocalDateTimenow()デフォルトのタイムゾーン現在日時を取得する
LocalDateTimeof(int y, int m, int d, int h, int mi)年月日時分を指定してLocalDateTimeを取得する
LocalDateTimeof(int y, int m, int d, int h, int mi, int s)年月日時分秒を指定してLocalDateTimeを取得する
intcompareTo(LocalDateTime d)LocalDateTimeを比較する
intgetDayOfMonth()月の日を取得する(1~31)
DayOfWeekgetDayOfWeek()曜日を取得する(列挙型DayOfWeek)
intgetDayOfYear()年の日を取得する(1~366)
intgetHour()時を取得する(0~59)
intgetMinute()分を取得する(0~59)
MonthgetMonth()月を取得する(列挙型Month)
intgetMonthValue()月を取得する(1~12)
intgetNano()ナノ秒を取得する
intgetSecond()秒を取得する(0~59)
intgetYear()年を取得する
LocalDateTimeminusDays(long days)指定した日数を減算した結果を返す
LocalDateTimeminusHours(long hours)指定した時間を減算した結果を返す
LocalDateTimeminusMinutes(long minutes)指定した分数を減算した結果を返す
LocalDateTimeminusMonths(long months)指定した月数を減算した結果を返す
LocalDateTimeminusNanos(long nanos)指定したナノ秒数を減算した結果を返す
LocalDateTimeminusSeconds(long seconds)指定した秒数を減算した結果を返す
LocalDateTimeminusWeeks(long weeks)指定した週数を減算した結果を返す
LocalDateTimeminusYears(long years)指定した年数を減算した結果を返す
LocalDateTimeplusDays(long days)指定した日数を加算した結果を返す
LocalDateTimeplusHours(long hours)指定した時間を加算した結果を返す
LocalDateTimeplusMinutes(long minutes)指定した分数を加算した結果を返す
LocalDateTimeplusMonths(long months)指定した月数を加算した結果を返す
LocalDateTimeplusNanos(long nanos)指定したナノ秒数を加算した結果を返す
LocalDateTimeplusSeconds(long seconds)指定した秒数を加算した結果を返す
LocalDateTimeplusWeeks(long weeks)指定した週数を加算した結果を返す
LocalDateTimeplusYears(long years)指定した年数を加算した結果を返す
LocalDatetoLocalDate()LocalDateの部分を取得する
LocalTimetoLocalTime()LocalTimeの部分を取得する
LocalDateTimewithDayOfMonth(int day)指定した日を置き換えた結果を返す
(指定する日は月の日)
LocalDateTimewithDayOfYear(int day)指定した日を置き換えた結果を返す
(指定する日は年の日)
LocalDateTimewithHour(long hour)指定した時を置き換えた結果を返す
LocalDateTimewithMinute(long minute)指定した分を置き換えた結果を返す
LocalDateTimewithMonth(long month)指定した月を置き換えた結果を返す
LocalDateTimewithNano(long nano)指定したナノ秒を置き換えた結果を返す
LocalDateTimewithSecond(long second)指定した秒を置き換えた結果を返す
LocalDateTimewithYear(long year)指定した年を置き換えた結果を返す
booleanisAfter(LocalDateTime d)dよりも後の日時の場合はtrueを返す
booleanisBefore(LocalDateTime d)dよりも前の日時の場合はtrueを返す
booleanisEqual(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);

コメント

タイトルとURLをコピーしました