[Java] 11. Stream 마무리-2
[Java] 10. Stream 마무리-1 [Java] 10. Stream 마무리-1 [Java] 9. 다양한 Stream의 생성 [Java] 9. 다양한 Stream의 생성 [Java] 8. Stream의 개념과 사용 방법-1 [Java] 8. Stream의 개념과 사용 방법-1 [Java] 7. 메소드 참조 (::
sesoc.tistory.com
날짜와 시간을 다루기 위해 JDK 8에 추가된 클래스로 LocalDate, LocalTime, LocalDateTime, LocalTime 클래스가 있다.
이 Localxxx라는 이름의 클래스가 추가되기 전에는 java.util.* 패키지 내에 있는 Date클래스와, Calendar, GregorianCalendar 클래스가 있었는데 JDK 에서 새롭게 설계된 java.time 패키지를 도입하였다.
이 두개의 클래스의 사용이 더 이상 권장되지 않는 것은
등의 이유가 있다.
이번에는 Java 8 이후 개선되어 도입된 java.time 패키지 내의 날짜 다루는 클래스를 다루어 보도록 하겠다.

| 메소드 명 | 설명 |
| now() | 현재 날짜, 시간에 기반하여 인스턴스 생성 |
| of() | 인자로 전달되는 특정 날짜, 시간에 기반한 인스턴스 생성 |
| atXXXX() | 특정 시간정보에 기반해 LocalDate. LocalTime, LocalDateTime 인스턴스 생성 |
위 표에서 설명한 메소드를 좀더 자세히 살펴보자
| 메소드 명 | 설명 |
| static LocalDateTime now() | 현재 로컬 컴퓨터의 날짜와 시간을 반환 |
| static LocalDateTime now(Clock clock) | Clock에 맞는 현재 날짜와 시간을 반환 |
| static LocalDateTime now(ZoneId zone) | ZoneId에 해당하는 날짜 시간을 반환 ZoneId를 넘기면 Zone에 해당하는 현재 시간을 반환 ex) 태평양 표준시: America/Los_Angeles, 일본 표준시: JST |
| static LocalDateTime of (int year, int month, int dayOfMonth, int hour, int minute) |
연, 월, 일, 시, 분 값을 전달하여 LocalDateTime 객체 생성 |
| static LocalDateTime of (int year, int month, int dayOfMonth, int hour, int minute, int second) |
연, 월, 일, 시, 분, 초 값을 전달하여 LocalDateTime 객체 생성 |
| static LocalDateTime of (int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond) |
연, 월, 일, 시, 분, 초, 나노초값을 전달하여 LocalDateTime 객체 생성 |
위 표에서 설명된 .static. 메소드를 이용하여 날짜 타입의 데이터를 생성하는 코드를 살펴보자
먼저, now() 메소드와 of() 메소드를 이용한 날짜 데이터의 생성벙법이다.
now() 메소드는 전달인자 없이 사용하며
of(int, int, int) 메소드로 날짜를 생성할 때에는 3개의 전달인자를 년, 월, 일의 순서대로 입력하고,
of(int, int, int) 메소드로 시간을 생성할 때에는 3개의 전달인자를 시, 분, 초의 순서대로 입력해서 생성할 수 있다.
FirstMakeDate.java
public class FirstMakeDate {
public static void main(String[] args) {
LocalDate d1 = LocalDate.now();
LocalDate d2 = LocalDate.of(2025, 4, 1);
LocalTime t1 = LocalTime.now();
LocalTime t2 = LocalTime.of(15, 20, 20);
System.out.printf("LocalDate.now() : %s\n", d1);
System.out.printf("LocalDate.of(2025, 1, 1) : %s\n", d2);
System.out.printf("LocalTime.now() : %s\n", t1);
System.out.printf("LocalTime.of(15, 20, 20) : %s\n", t2);
LocalDateTime dt1 = LocalDate.now().atTime(LocalTime.MIDNIGHT);
LocalDateTime dt2 = LocalDate.now().atTime(LocalTime.MAX);
System.out.printf("LocalDate.now().atTime(LocalTime.MIDNIGHT) : %s\n", dt1);
System.out.printf("LocalDate.now().atTime(LocalTime.MAX) : %s\n", dt2);
}
}
< 실행 결과 >
LocalDate.now() : 2025-04-16
LocalDate.of(2025, 1, 1) : 2025-04-01
LocalTime.now() : 09:42:04.153603300
LocalTime.of(15, 20, 20) : 15:20:20
LocalDate.now().atTime(LocalTime.MIDNIGHT) : 2025-04-16T00:00
LocalDate.now().atTime(LocalTime.MAX) : 2025-04-16T23:59:59.999999999
다음 예제도 살펴보자
SecondMakeDate.java
public class SecondMakeDate {
public static void main(String[] args) {
// now()
LocalDateTime time1 = LocalDateTime.now();
LocalDateTime time2 = LocalDateTime.now(Clock.systemDefaultZone());
LocalDateTime time3 = LocalDateTime.now(ZoneId.of("Asia/Seoul")); // of()
LocalDateTime time4 = LocalDateTime.of(2019, 1, 15, 0, 0, 0);
LocalDateTime time5 = LocalDateTime.of(LocalDate.now(), LocalTime.now());
// parse()
LocalDateTime independent = LocalDateTime.parse("1945-08-15T15:36:00.000");
System.out.println("광복절 일왕 방송: " + independent);
LocalDateTime xmas = LocalDateTime.of(2025, 12, 25, 0, 0, 0);
System.out.println("2025년 Christmas: " + xmas);
// at()
LocalDateTime vote = Year.of(2025).atMonth(6).atDay(3).atTime(9, 00);
System.out.println("대통령 선거일:" + vote);
LocalDateTime time7 = LocalDate.now().atTime(10, 30);
LocalDateTime time6 = Year.of(2024).atMonth(1).atDay(15).atTime(10, 30);
}
}
위의 코드에서 살펴보면 알 수 있듯 날짜 객체를 생성하는 작업 매우 간단하다.
이번에는 날짜를 생성하는 방법을 살펴보았는데, 다음에는 날짜와 관련된 메소드가 어떤 것들이 있는지 살펴보도록 하자.
| [Java] 13. 날짜와 시간 관련 연산 메소드 (0) | 2025.04.16 |
|---|---|
| [Java] 11. Stream 마무리-2 (0) | 2023.09.22 |
| [Java] 10. Stream 마무리-1 (0) | 2023.09.22 |
댓글 영역