이 글에서는 Java를 사용하여 달력의 날짜를 여러 가지 형식으로 출력하는 방법을 알아보겠습니다. Java에는 기본적으로 내장된 Date 클래스가 없지만, java.time 패키지를 임포트하면 날짜와 시간 API를 자유롭게 활용할 수 있습니다. 이 패키지에는 다양한 날짜·시간 관련 클래스들이 포함되어 있어 손쉽게 원하는 형식으로 날짜를 변환할 수 있습니다.
실행 결과 미리 보기
프로그램을 실행하면 아래와 같이 세 가지 서로 다른 형식의 날짜가 출력됩니다.
첫 번째 날짜 형식: 2022-03-17T23:37:37.623304800
두 번째 날짜 형식: 17/03/2022
세 번째 날짜 형식: Thursday, 17 Mar 2022
알고리즘
프로그램의 전체적인 흐름은 다음과 같습니다.
- 프로그램을 시작합니다.
- LocalDateTime 타입의 객체 date를 선언합니다.
- 현재 시스템의 날짜와 시간 값으로 객체를 초기화합니다.
- DateTimeFormatter 객체를 사용하여 서로 다른 날짜·시간 형식을 정의합니다.
- 정의한 형식대로 날짜를 변환하여 화면에 출력합니다.
- 프로그램을 종료합니다.
예제 1: main 메서드에서 모든 작업 처리하기
아래 예제는 모든 연산을 하나의 'main' 함수 안에서 처리하는 방식입니다. 코드가 간결하여 간단한 스크립트나 학습용으로 적합합니다.
import java.time.*;
import java.time.format.DateTimeFormatter;
public class Demo {
public static void main(String[] args){
System.out.println("필요한 패키지를 임포트했습니다");
LocalDateTime date = LocalDateTime.now();
System.out.println("LocalDateTime 객체가 정의되었습니다");
System.out.println("\n첫 번째 날짜 형식:" +date);
DateTimeFormatter date_format_1 = DateTimeFormatter.ofPattern("dd/MM/yyyy");
String formattedDate_1 = date.format(date_format_1);
System.out.println("\n두 번째 날짜 형식:" +formattedDate_1);
DateTimeFormatter date_format_2 = DateTimeFormatter.ofPattern("EEEE, dd MMM yyyy");
String formattedDate_2 = date.format(date_format_2);
System.out.println("\n세 번째 날짜 형식:" +formattedDate_2);
}
}
출력 결과
필요한 패키지를 임포트했습니다
LocalDateTime 객체가 정의되었습니다
첫 번째 날짜 형식:2022-03-29T08:53:19.809
두 번째 날짜 형식:29/03/2022
세 번째 날짜 형식:Tuesday, 29 Mar 2022
예제 2: 객체 지향 방식으로 함수 분리하기
다음 예제는 날짜 형식 변환 로직을 별도의 함수로 캡슐화하여 객체 지향 프로그래밍(OOP) 스타일로 구현한 것입니다. 코드의 재사용성과 유지보수성이 높아져 실무 프로젝트에서 권장되는 구조입니다.
import java.time.*;
import java.time.format.DateTimeFormatter;
public class Demo {
static void print_date_format(LocalDateTime date){
DateTimeFormatter date_format_1 = DateTimeFormatter.ofPattern("dd/MM/yyyy");
String formattedDate_1 = date.format(date_format_1);
System.out.println("\n두 번째 날짜 형식:" +formattedDate_1);
DateTimeFormatter date_format_2 = DateTimeFormatter.ofPattern("EEEE, dd MMM yyyy");
String formattedDate_2 = date.format(date_format_2);
System.out.println("\n세 번째 날짜 형식:" +formattedDate_2);
}
public static void main(String[] args){
System.out.println("필요한 패키지를 임포트했습니다");
LocalDateTime date = LocalDateTime.now();
System.out.println("LocalDateTime 객체가 정의되었습니다");
System.out.println("\n첫 번째 날짜 형식:" +date);
print_date_format(date);
}
}
출력 결과
필요한 패키지를 임포트했습니다
LocalDateTime 객체가 정의되었습니다
첫 번째 날짜 형식:2022-03-29T08:53:58.155
두 번째 날짜 형식:29/03/2022
세 번째 날짜 형식:Tuesday, 29 Mar 2022
주요 패턴 문자 정리
DateTimeFormatter에서 사용할 수 있는 대표적인 패턴 문자는 다음과 같습니다.
- yyyy: 4자리 연도 (예: 2022)
- MM: 2자리 월 (예: 03)
- dd: 2자리 일 (예: 17)
- EEEE: 요일의 전체 이름 (예: Thursday)
- MMM: 월의 축약 이름 (예: Mar)
이처럼 java.time 패키지의 LocalDateTime과 DateTimeFormatter를 조합하면 ISO 기본 형식부터 사용자 지정 형식까지 다양하게 날짜를 표현할 수 있습니다. 필요에 따라 패턴 문자를 조합하여 프로젝트에 맞는 날짜 형식을 자유롭게 만들어 보세요.