クラス
LocalDate | 日付を扱う |
LocalTime | 時間を扱う |
LocalDateTime | 日付と時間を扱う |
インスタンス生成
now() | 現在時間取得 | LocalDate.now() |
of() | 数値指定 | LocalDate.of(2024,11,25) |
parse() | 文字列から | LocalDate.parse("2024-11-25") |
// 現在日時の取得
LocalDate d1 = LocalDate.now();
// 特定日時
LocalDate d2 = LocalDate.of(2024,11,25);
// 特定日時
LocalDateTime dt1 = LocalDateTime.of(2025,1,3,12,30,50);
// 文字列
LocalDate d3 = LocalDate.parse("2024-11-24");
メソッド
isAfter(値) | 値より後か? | d1.isAfter(d2) |
isBefore(値) | 値より前か? | d1.isBefore(d2) |
isEqual(値) | 値と同じか? | d1.isEqual(d2) |
plus単位(値) | 単位(Years,Months,Days,Hours,Minutes,Seconds)分足して返す | d.plusDay(5) |
minus単位(値) | 単位(Years,Months,Days,Hours,Minutes,Seconds)分引いて返す | d.minusDay(5) |
get単位() | 単位(Year,MonthValue,DayOfMonth,DayOfWeek,Hour,Minute,Second)取得 | d.getDayOfMonth() |
with単位() | 単位(Year,MonthValue,DayOfMonth,Hour,Minute,Second)設定 | d = d.withDayOfMonth(25) |
// 前後関係
if( d1.isAfter(d2)) {
System.out.println("d1が後");
}else {
System.out.println("d2が後");
}
// 5日後
LocalDate d4 = d1.plusDays(5);
System.out.println(d4);
System.out.println(d1.getYear()); // 年
System.out.println(d1.getMonthValue()); // 月
System.out.println(d1.getDayOfMonth()); // 日
// 日を1日に
d1 = d1.withDayOfMonth(1);
System.out.println(d1);
書式
format(書式)。書式はDateTimeFormatterクラス。DateTimeFormatter.ofPattern(書式文字列)で生成。
文字列化
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("y年MM月dd日");
System.out.println(d1.format(dtf));
文字列から
String str = "2025/06/08";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("y/MM/dd");
LocalDate d = LocalDate.parse(str, dtf);
System.out.println(d);
書式記号
記号 |
意味 |
例 |
y | 年 | 2025 |
M | 月 | 6 |
MM | 月(2桁) | 06 |
d | 日(数字) | 8 |
dd | 日(2桁) | 08 |
H | 時(0~23) | 9 |
HH | 時(2桁、0~23) | 09 |
h | 時(1~12) | 3 |
hh | 時(2桁、1~12) | 03 |
m | 分 | 5 |
mm | 分(2桁) | 05 |
s | 秒 | 7 |
ss | 秒(2桁) | 07 |
a | 午前/午後 | AM / PM |
E | 曜日(短縮) | 日 |
EEEE | 曜日(完全) | 日曜日 |
Z | タイムゾーン(+0900) | +0900 |
XXX | ISO 8601形式の時差 | +09:00 |
間隔
// 2つのLocalDateの間隔
long days = ChronoUnit.DAYS.between(d1, d2);
System.out.println(days);
他の型との変換
java.sql.Dateとの変換
// java.sql.Dateへ変換
Date d = Date.valueOf(d1);
System.out.println(d);
// java.sql.Dateから変換
LocalDate d5 = d.toLocalDate();
System.out.println(d5);