Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java로 다양한 국가 형식의 날짜와 시간 표시하기

이 글에서는 Java를 사용하여 서로 다른 국가의 날짜·시간 형식으로 값을 표시하는 방법을 알아봅니다.

Java에는 기본적으로 내장된 Date 클래스가 없지만, java.time 패키지를 임포트하면 날짜와 시간 API를 자유롭게 활용할 수 있습니다. 이 패키지에는 다양한 날짜 및 시간 관련 클래스들이 포함되어 있으며, 여기에 LocaleDateFormat을 함께 사용하면 특정 국가의 언어와 문화에 맞는 형식으로 날짜를 손쉽게 출력할 수 있습니다.

실행 결과 미리 보기

입력

프로그램 실행

기대 출력

영국(England) 형식: Friday, 18 March 2022
이탈리아(Italy) 형식: venerdì, 18 marzo 2022

알고리즘

Step 1 - 시작
Step 2 - LocalDateTime 타입의 객체 date를 선언한다.
Step 3 - 필요한 값을 정의한다.
Step 4 - DateTimeFormatter 객체를 사용하여 다양한 날짜·시간 형식을 정의한다.
Step 5 - 국가별로 상이한 날짜·시간 형식을 화면에 출력한다.
Step 6 - 종료

예제 1: main 메서드에 모든 로직을 작성하는 방식

아래 예제는 모든 연산을 하나의 'main' 함수 안에 함께 작성한 기본적인 구조입니다.

import java.text.DateFormat;
import java.util.*;
public class Demo {
    public static void main(String[] args) throws Exception{
        System.out.println("필요한 패키지가 임포트되었습니다");
        Date date_time = new Date();
        Locale England_time = new Locale("en", "ch");
        DateFormat de = DateFormat.getDateInstance(DateFormat.FULL, England_time);
        System.out.println("\nThe England Format is: " + de.format(date_time));
        Locale Italy_time = new Locale("it", "ch");
        DateFormat di = DateFormat.getDateInstance(DateFormat.FULL, Italy_time);
        System.out.println("The Italian Format is: " + di.format(date_time));
    }
}

출력 결과

필요한 패키지가 임포트되었습니다

The England Format is: Tuesday, March 29, 2022
The Italian Format is: martedì, 29. marzo 2022

예제 2: 객체 지향 방식으로 함수 분리하기

아래 예제는 연산 로직을 별도의 함수로 캡슐화하여 객체 지향 프로그래밍(OOP) 스타일로 구현한 것입니다. 코드의 재사용성과 가독성이 향상됩니다.

import java.text.DateFormat;
import java.util.*;
public class Demo {
    static void Time_formats(Date date_time ){
        Locale England_time = new Locale("en", "ch");
        DateFormat de = DateFormat.getDateInstance(DateFormat.FULL, England_time);
        System.out.println("\nThe England Format is: " + de.format(date_time));
        Locale Italy_time = new Locale("it", "ch");
        DateFormat di = DateFormat.getDateInstance(DateFormat.FULL, Italy_time);
        System.out.println("The Italian Format is: " + di.format(date_time));
    }
    public static void main(String[] args) throws Exception{
        System.out.println("필요한 패키지가 임포트되었습니다");
        Date date_time = new Date();
        System.out.println("Date 객체가 정의되었습니다");
        Time_formats(date_time);
    }
}

출력 결과

필요한 패키지가 임포트되었습니다

Date 객체가 정의되었습니다

The England Format is: Tuesday, March 29, 2022
The Italian Format is: martedì, 29. marzo 2022

핵심 포인트 정리

Locale 객체는 언어 코드와 국가 코드를 조합하여 생성됩니다. 예를 들어 new Locale("it", "ch")는 스위스 지역에서 사용되는 이탈리아어 형식을 의미합니다. 이렇게 만든 Locale을 DateFormat.getDateInstance()에 전달하면 해당 지역의 규칙에 따라 요일, 월 이름, 숫자 구분 방식까지 모두 현지화된 형태로 출력됩니다.

참고로 최신 Java 프로젝트에서는 레거시 API인 DateDateFormat보다 LocalDateTimeDateTimeFormatter(java.time 패키지)를 사용하는 것이 권장됩니다. 새로운 API는 스레드 세이프(thread-safe)하고 불변(immutable) 설계로 되어 있어 더 안전하고 직관적입니다.