LocalDateTime이란?
자바에서 날짜와 시간을 함께 표현하기 위해 사용하는 클래스입니다.
LocalDateTime 특징
날짜(년, 월, 일), 시간(시, 분, 초, 나노초)을 포함하지만 시간대(TimeZone)을 포함하지 않습니다.
즉 정리하자면 LocalDateTime은 시간대를 포함하지 않기 때문에, 현재 실행 중인 시스템의 로컬 시간 기준으로 동작합니다.
※ 만약 시간대를 한국이 아닌 다른 시간대로 하고 싶다면 LocalDateTime.now(ZoneId.of("Asia/Seoul")); 으로 작성하시면 됩니다.
출력 형태
2025-05-09T14:30:00
주요 메서드 및 사용법
// 현재 날짜와 시간
LocalDateTime now = LocalDateTime.now();
// 특정 날짜와 시간 지정
LocalDateTime dateTime = LocalDateTime.of(2025, 5, 9, 14, 30);
날짜/시간 조작
LocalDateTime future = dateTime.plusDays(10); // 10일 후
LocalDateTime past = dateTime.minusHours(2); // 2시간 전
LocalDateTime changed = dateTime.withHour(18); // 시(hour)만 변경
날짜 포맷팅/파싱
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formatted = dateTime.format(formatter); // 문자열로 포맷
LocalDateTime parsed = LocalDateTime.parse("2025-05-09 14:30:00", formatter); // 문자열 -> LocalDateTime
날짜 추출
int year = dateTime.getYear();
int month = dateTime.getMonthValue(); // 1~12
int day = dateTime.getDayOfMonth();
int hour = dateTime.getHour();
DayOfWeek enum
요일 | Enum 값 | getValue() |
월요일 | MONDAY | 1 |
화요일 | TUESDAY | 2 |
수요일 | WEDNESDAY | 3 |
목요일 | THURSDAY | 4 |
금요일 | FRIDAY | 5 |
토요일 | SATURDAY | 6 |
일요일 | SUNDAY | 7 |
날짜 비교
isAfter() : 인자보다 미래 시간 일 때 true
isBefore() : 인자보다 과거 시간 일 때 true
isEquals() : 인자와 같은 시간 일 때 true
compareTo() : 인자보다 크면 1, 인자와 같으면 0, 인자보다 작으면 -1
public static void main(String[] args) throws IOException {
LocalDateTime before = LocalDateTime.now().minusHours(10);
LocalDateTime now = LocalDateTime.now();
LocalDateTime after = LocalDateTime.now().plusHours(10);
System.out.println("now.isAfter(before) : " + now.isAfter(before));
System.out.println("now.isBefore(before) : " + now.isBefore(before));
System.out.println("now.isEqual(before) : " + now.isEqual(before));
System.out.println("now.compareTo(before) : " + now.compareTo(before));
System.out.println("------------------------------------------");
System.out.println("now.isAfter(now) : " + now.isAfter(now));
System.out.println("now.isBefore(now) : " + now.isBefore(now));
System.out.println("now.isEqual(now) : " + now.isEqual(now));
System.out.println("now.compareTo(now) : " + now.compareTo(now));
System.out.println("------------------------------------------");
System.out.println("now.isAfter(after) : " + now.isAfter(after));
System.out.println("now.isBefore(after) : " + now.isBefore(after));
System.out.println("now.isEqual(after) : " + now.isEqual(after));
System.out.println("now.compareTo(after) : " + now.compareTo(after));
}
결과
now.isAfter(before) : true
now.isBefore(before) : false
now.isEqual(before) : false
now.compareTo(before) : 1
------------------------------------------
now.isAfter(now) : false
now.isBefore(now) : false
now.isEqual(now) : true
now.compareTo(now) : 0
------------------------------------------
now.isAfter(after) : false
now.isBefore(after) : true
now.isEqual(after) : false
now.compareTo(after) : -1
LocalDateTime 주의사항
- 시간대를 고려하지 않기 때문에 서버 간 시간 오차나 국제화 이슈가 있다면 ZonedDateTime 또는 OffsetDateTime을 사용해야 합니다.
- 직렬화 시 표준 포맷(JSON 등)에서는 보통 ISO-8601 형식("2025-05-09T14:30:00")을 따릅니다.
'Java' 카테고리의 다른 글
[Java] BigInteger란? 사용법 (1) | 2025.03.24 |
---|---|
[Java] Queue 구현 (1) | 2025.02.10 |
[Java] Deque 구현 (1) | 2025.02.04 |
[Java] Stack 구현하기 (1) | 2025.02.01 |
[Java] 실행 시간 측정 (3) | 2025.02.01 |