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

Java에서 SimpleDateFormat을 사용하여 연도를 포맷하는 방법

java.text.SimpleDateFormat 클래스는 날짜 문자열을 Date 객체로 변환하거나(파싱), Date 객체를 원하는 형식의 문자열로 변환하는(포맷) 데 사용되는 클래스입니다.

날짜 문자열 파싱하기

SimpleDateFormat으로 날짜 문자열을 파싱하는 절차는 다음과 같습니다.

  • 원하는 형식 패턴(format pattern)을 인자로 전달하여 SimpleDateFormat 객체를 생성합니다.
  • parse() 메서드를 호출하여 날짜 문자열을 파싱합니다.

예제 코드

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Sample {
    public static void main(String args[]) throws ParseException {
        SimpleDateFormat formatter1 = new SimpleDateFormat("HH:mm:ss");
        Date time1 = formatter1.parse("07:25:30");
        System.out.println("Date value: "+time1);
        SimpleDateFormat formatter3 = new SimpleDateFormat("hh 'o''clock' a");
        Date time3 = formatter3.parse("09 o'clock AM");
        System.out.println("Date value: "+time3);
    }
}

실행 결과

Date value: Thu Jan 01 07:25:30 IST 1970
Date value: Thu Jan 01 09:00:00 IST 1970

연도 포맷하기

SimpleDateFormat 클래스에서 연도를 표현할 때 사용되는 패턴 문자는 다음과 같습니다.

문자구성 요소예시
y연도 (Year)2005, 96
Y주 기준 연도 (Week year)2005, 96

y는 일반적인 달력상의 연도를 의미하고, Y는 주(week) 단위로 연도를 구분하는 '주 기준 연도'를 의미합니다. 두 문자의 차이는 연말·연초에 주가 걸치는 경우 결과가 달라질 수 있으므로 주의해야 합니다.

예제 코드

다음 예제는 SimpleDateFormat 클래스를 사용하여 다양한 방식으로 연도를 파싱하고 포맷하는 방법을 보여줍니다.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Example {
    public static void main(String args[]) throws ParseException {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy/dd/MM");
        Date date = formatter.parse("2007/25/06");
        System.out.println("Date value: "+date);

        formatter = new SimpleDateFormat("y:G");
        date = formatter.parse("1920:BC");
        System.out.println("Date value: "+date);

        formatter = new SimpleDateFormat("D-M-Y");
        date = formatter.parse("25-05-1989");
        System.out.println("Date value: "+date);
    }
}

실행 결과

Date value: Mon Jun 25 00:00:00 IST 2007
Date value: Sun Jan 01 00:00:00 IST 1920
Date value: Sun Jan 01 00:00:00 IST 1989

참고 사항

패턴 문자 D는 '연 중 몇 번째 날(day of year)'을 의미하므로, 위 예제의 "D-M-Y" 패턴은 일반적인 '일-월-연도'와는 다르게 해석됩니다. 또한 SimpleDateFormat은 스레드에 안전하지 않기 때문에 멀티스레드 환경에서는 각 스레드별로 별도의 인스턴스를 생성하거나, Java 8 이상에서는 java.time 패키지의 DateTimeFormatter(스레드 안전) 사용을 권장합니다.