문홍의 공부장

Java SimpleDateFormat 으로 날짜/시간/요일 표현하기 본문

개발/Java

Java SimpleDateFormat 으로 날짜/시간/요일 표현하기

moonong 2020. 1. 26. 16:53
반응형

SimpleDateFormat 클래스

SimpleDateFormat 클래스는 날짜와 시간을 형식화하여 나타낼 수 있도록 하는 클래스이다. Date, Calendar 클래스만으로는 데이터를 원하는 형태로 다양하게 출력하기엔 다소 복잡한 면이 있다. 하지만 SimpleDateFormat 클래스를 이용하여 간단하게 표현이 가능하다.

기호의미
G연대(BC, AD)
y년도
M
w년의 몇 번째 주(1~53)
W월의 몇 번째 주(1~5)
D년의 몇 번째 일(!~366)
d월의 몇 번째 일(1~31)
F월의 몇 번째 요일(1~5)
E요일
a오전/오후
H시간 (0~23)
h시간 (1~12)
K시간 (0~11)
k시간 (1~24)
m분 (0~59)
s초 (0~59)
S1/1000 초 (0~999)
zTimeZone (General time zone) ex) GMT+9:00
ZTimeZone (RFC 822 time zone) ex) +0900

Date today = new Date();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd E요일");
SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss");
SimpleDateFormat sdf3 = new SimpleDateFormat("a hh:mm:ss");
SimpleDateFormat sdf4 = new SimpleDateFormat("오늘은 올 해의 D번째 날");
SimpleDateFormat sdf5 = new SimpleDateFormat("오늘은 이 달의 d번째 날");
SimpleDateFormat sdf6 = new SimpleDateFormat("오늘은 올 해의 w번째 주");
SimpleDateFormat sdf7 = new SimpleDateFormat("오늘은 이 달의 W번째 주");
SimpleDateFormat sdf8 = new SimpleDateFormat("오늘은 이 달의 F번째 E요일");

출력값:
2020-01-26 일요일
16:31:13
오후 04:31:13
오늘은 올 해의 26번째 날
오늘은 이 달의 26번째 날
오늘은 올 해의 5번째 주
오늘은 이 달의 5번째 주
오늘은 이 달의 4번째 일요일

.format() 메소드는 Date 인스턴스만을 허용하기 때문에, Calendar 클래스를 사용할 경우 Calendar 인스턴스를 Date 인스턴스로 변환 후 사용하여야 한다. (Calendar 클래스의 month는 0부터 시작하는 것을 유념하자)


Calendar cal = Calendar.getInstance();
cal.set(2020, 1, 25);

Date day = cal.getTime();        
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd");

.parse() 를 사용하여 데이터의 출력 형식을 변환할 수 있다. 아래는 입력받은 "2020년 1월 26일"이라는 문자열을 Date 객체로 파싱해주는 예제이다.


DateFormat df = new SimpleDateFormat("yyyy년 MM월 dd일");
DateFormat df2 = new SimpleDateFormat("yyyy/MM/DD E요일");

        try {
            Date day = df.parse("2020년 1월 26일");
            System.out.println(df2.format(day));
        } catch (ParseException e) {
            e.printStackTrace();
        }
반응형