소개
이 튜토리얼은 Java 의 LocalDate 클래스를 사용하여 현재 날짜를 가져오고 다음 날짜를 계산하는 방법을 안내합니다. Java 8 에 도입된 Java Time API 는 포괄적인 날짜 및 시간 처리 기능을 제공합니다. 이 튜토리얼을 마치면 LocalDate 를 사용하여 기본적인 날짜 연산을 효율적으로 수행하는 방법을 이해하게 될 것입니다.
이 튜토리얼은 Java 의 LocalDate 클래스를 사용하여 현재 날짜를 가져오고 다음 날짜를 계산하는 방법을 안내합니다. Java 8 에 도입된 Java Time API 는 포괄적인 날짜 및 시간 처리 기능을 제공합니다. 이 튜토리얼을 마치면 LocalDate 를 사용하여 기본적인 날짜 연산을 효율적으로 수행하는 방법을 이해하게 될 것입니다.
코딩을 시작하기 전에, Java 애플리케이션에서 날짜를 처리하는 데 LocalDate 클래스가 왜 유용한지 알아보겠습니다.
Java 8 은 이전 날짜 및 시간 클래스의 제한 사항을 해결하기 위해 java.time 패키지에 Java Time API 를 도입했습니다. 이 API 는 날짜 및 시간 처리에 대한 더 명확하고 직관적인 접근 방식을 제공합니다.
LocalDate 클래스는 시간 구성 요소 (년, 월, 일) 가 없는 날짜를 나타냅니다. 이는 불변 (immutable) 하며, 스레드 안전 (thread-safe) 하고, ISO-8601 달력 시스템을 따릅니다.
LocalDate 를 사용하는 몇 가지 주요 장점은 다음과 같습니다.
LocalDate 기능을 탐색하기 위해 새로운 Java 파일을 만들어 보겠습니다.
DateExample.java로 지정하고 "OK"를 클릭합니다.public class DateExample {
public static void main(String[] args) {
// We will add our date code here
System.out.println("Learning about LocalDate in Java");
}
}
이제 Java 파일을 만들었으므로 다음 단계에서 현재 날짜로 작업하는 코드를 추가하겠습니다.
이 단계에서는 LocalDate 클래스를 사용하여 현재 날짜를 가져와 표시하도록 Java 프로그램을 수정합니다.
먼저, java.time 패키지에서 LocalDate 클래스를 가져와야 합니다. DateExample.java 파일을 열고 맨 위에 import 문을 추가합니다.
import java.time.LocalDate;
public class DateExample {
public static void main(String[] args) {
// We will add our date code here
System.out.println("Learning about LocalDate in Java");
}
}
LocalDate 클래스는 현재 날짜를 반환하는 now()라는 정적 메서드를 제공합니다. 현재 날짜를 가져와 표시하도록 코드를 수정해 보겠습니다.
import java.time.LocalDate;
public class DateExample {
public static void main(String[] args) {
// Get the current date
LocalDate currentDate = LocalDate.now();
// Display the current date
System.out.println("Current date: " + currentDate);
}
}
이제 프로그램을 컴파일하고 실행해 보겠습니다.
cd /home/labex/project
javac DateExample.java
java DateExample
다음과 유사한 출력을 볼 수 있습니다.
Current date: 2023-04-12
실제 날짜는 프로그램을 실행할 때의 현재 날짜를 반영합니다.
LocalDate 객체의 기본 문자열 표현은 ISO-8601 형식을 따릅니다: YYYY-MM-DD. 이는 날짜를 나타내는 국제 표준입니다.
예를 들어, 2023-04-12는 2023 년 4 월 12 일을 나타냅니다.
LocalDate 클래스를 사용하여 현재 날짜를 성공적으로 가져와 표시했습니다. 다음 단계에서는 다음 날짜를 계산하는 방법을 배우겠습니다.
이제 현재 날짜를 가져올 수 있으므로 LocalDate 객체에 날짜를 더하여 다음 날짜를 계산하는 방법을 배우겠습니다.
LocalDate 클래스는 다음과 같은 날짜 조작을 위한 여러 메서드를 제공합니다.
plusDays(long days): 지정된 일수를 더합니다.plusWeeks(long weeks): 지정된 주 수를 더합니다.plusMonths(long months): 지정된 월 수를 더합니다.plusYears(long years): 지정된 연 수를 더합니다.뺄셈을 위한 해당 minus 메서드도 있습니다.
다음 날짜를 계산하고 표시하도록 코드를 개선해 보겠습니다.
import java.time.LocalDate;
public class DateExample {
public static void main(String[] args) {
// Get the current date
LocalDate currentDate = LocalDate.now();
// Calculate the next date by adding one day
LocalDate nextDate = currentDate.plusDays(1);
// Display both dates
System.out.println("Current date: " + currentDate);
System.out.println("Next date: " + nextDate);
}
}
업데이트된 프로그램을 컴파일하고 실행해 보겠습니다.
DateExample.java에 변경 사항을 저장했는지 확인합니다.javac DateExample.java
java DateExample
다음과 유사한 출력을 볼 수 있습니다.
Current date: 2023-04-12
Next date: 2023-04-13
다시 말하지만, 실제 날짜는 프로그램을 실행할 때의 현재 날짜를 반영합니다.
다른 날짜 조작 메서드를 시연하기 위해 프로그램을 더 개선해 보겠습니다.
import java.time.LocalDate;
public class DateExample {
public static void main(String[] args) {
// Get the current date
LocalDate currentDate = LocalDate.now();
// Calculate various future dates
LocalDate nextDate = currentDate.plusDays(1);
LocalDate nextWeek = currentDate.plusWeeks(1);
LocalDate nextMonth = currentDate.plusMonths(1);
LocalDate nextYear = currentDate.plusYears(1);
// Display all dates
System.out.println("Current date: " + currentDate);
System.out.println("Next date: " + nextDate);
System.out.println("Date after one week: " + nextWeek);
System.out.println("Date after one month: " + nextMonth);
System.out.println("Date after one year: " + nextYear);
}
}
프로그램을 다시 컴파일하고 실행합니다.
javac DateExample.java
java DateExample
출력은 현재 날짜, 다음 날짜, 그리고 1 주, 1 개월, 1 년 후의 날짜를 표시합니다.
Current date: 2023-04-12
Next date: 2023-04-13
Date after one week: 2023-04-19
Date after one month: 2023-05-12
Date after one year: 2024-04-12
plusDays()의 결과를 새 변수에 할당했음을 알 수 있습니다. 이는 LocalDate 객체가 불변 (immutable) 하기 때문입니다. 즉, 생성 후에는 값을 변경할 수 없습니다. plusDays()와 같은 메서드는 원래 객체를 수정하지 않고, 대신 업데이트된 값을 가진 새 객체를 반환합니다.
이 불변성은 LocalDate 객체를 스레드 안전하게 만들고 복잡한 애플리케이션에서 더 예측 가능하게 만드는 중요한 기능입니다.
이 단계에서는 LocalDate 객체에서 일, 월, 연도, 요일과 같은 개별 구성 요소를 추출하는 방법을 배우겠습니다.
LocalDate 클래스는 날짜의 특정 구성 요소를 추출하기 위한 여러 메서드를 제공합니다.
getDayOfMonth(): 월의 일 (1-31) 을 반환합니다.getMonthValue(): 월을 숫자로 반환합니다 (1-12).getMonth(): 월을 열거형 상수 (enum constant) 로 반환합니다.getYear(): 연도를 반환합니다.getDayOfWeek(): 요일을 열거형 상수 (enum constant) 로 반환합니다.이러한 메서드를 탐색하기 위해 새 파일을 만들어 보겠습니다.
DateComponents.java라는 새 파일을 만듭니다.import java.time.LocalDate;
import java.time.Month;
import java.time.DayOfWeek;
public class DateComponents {
public static void main(String[] args) {
// Get the current date
LocalDate currentDate = LocalDate.now();
// Extract date components
int day = currentDate.getDayOfMonth();
int monthValue = currentDate.getMonthValue();
Month month = currentDate.getMonth();
int year = currentDate.getYear();
DayOfWeek dayOfWeek = currentDate.getDayOfWeek();
// Display the components
System.out.println("Current date: " + currentDate);
System.out.println("Day of month: " + day);
System.out.println("Month (number): " + monthValue);
System.out.println("Month (name): " + month);
System.out.println("Year: " + year);
System.out.println("Day of week: " + dayOfWeek);
}
}
이제 새 프로그램을 컴파일하고 실행해 보겠습니다.
javac DateComponents.java
java DateComponents
다음과 유사한 출력을 볼 수 있습니다.
Current date: 2023-04-12
Day of month: 12
Month (number): 4
Month (name): APRIL
Year: 2023
Day of week: WEDNESDAY
현재 날짜를 가져오는 것 외에도 of() 메서드를 사용하여 특정 날짜를 나타내는 LocalDate 객체를 만들 수 있습니다. 특정 날짜를 만들도록 프로그램을 개선해 보겠습니다.
import java.time.LocalDate;
import java.time.Month;
import java.time.DayOfWeek;
public class DateComponents {
public static void main(String[] args) {
// Get the current date
LocalDate currentDate = LocalDate.now();
// Create a specific date
LocalDate specificDate = LocalDate.of(2025, 12, 25);
// Extract date components from the current date
int day = currentDate.getDayOfMonth();
int monthValue = currentDate.getMonthValue();
Month month = currentDate.getMonth();
int year = currentDate.getYear();
DayOfWeek dayOfWeek = currentDate.getDayOfWeek();
// Display the current date components
System.out.println("Current date: " + currentDate);
System.out.println("Day of month: " + day);
System.out.println("Month (number): " + monthValue);
System.out.println("Month (name): " + month);
System.out.println("Year: " + year);
System.out.println("Day of week: " + dayOfWeek);
// Display the specific date
System.out.println("\nSpecific date: " + specificDate);
System.out.println("Day of week for specific date: " + specificDate.getDayOfWeek());
}
}
업데이트된 프로그램을 컴파일하고 실행합니다.
javac DateComponents.java
java DateComponents
이제 출력에는 특정 날짜에 대한 정보가 포함됩니다.
Current date: 2023-04-12
Day of month: 12
Month (number): 4
Month (name): APRIL
Year: 2023
Day of week: WEDNESDAY
Specific date: 2025-12-25
Day of week for specific date: THURSDAY
이제 LocalDate 객체에서 구성 요소를 추출하고 특정 날짜를 만드는 방법을 배웠습니다. 이러한 기능은 날짜 기반 작업을 수행하거나 다양한 형식으로 날짜 정보를 표시해야 하는 애플리케이션을 구축할 때 특히 유용합니다.
이 튜토리얼에서는 Java Time API 의 LocalDate 클래스를 사용하여 Java 에서 날짜를 사용하는 방법을 배웠습니다. 다음은 수행한 작업에 대한 요약입니다.
LocalDate.now()를 사용하여 현재 날짜를 검색하는 Java 프로그램을 만들었습니다.LocalDate.of() 메서드를 사용하여 특정 날짜를 만들었습니다.이러한 기본 날짜 연산은 Java 애플리케이션에서 더 복잡한 날짜 기반 기능의 기초를 형성합니다. Java Time API 는 날짜 및 시간 작업을 위한 포괄적인 클래스 및 메서드 집합을 제공하여 애플리케이션에서 날짜 관련 요구 사항을 더 쉽게 처리할 수 있도록 합니다.
얻은 지식의 몇 가지 일반적인 응용 분야는 다음과 같습니다.
Java 여정을 계속 진행하면서 시간대 작업, 다양한 지역에 대한 날짜 형식 지정, 복잡한 날짜 계산 수행과 같은 Java Time API 의 더 고급 기능을 탐색할 수 있습니다.