반응형

프로그래밍을 하다 보면 시간이나 날짜를 사용할 일이 많은데, 아마 대부분 Date 클래스를 사용했을 겁니다.

예를 들어 현재 시간을 가져오는 코드는 다음과 같습니다.

 

import java.util.Date;

public class Main {
    public static void main(String[] args) {
        Date now = new Date();
        System.out.println(now);
    }
}

위 코드를 실행하면 다음과 같이 출력된다.

Sun Sep 01 20:41:56 KST 2019

보시다시피 Date 클래스에서 자체적으로 정의해둔 toString() 함수가 있어 위와 같이 출력이 됩니다.

Date 클래스의 구현 코드를 살펴보면 Calendar를 기반으로 한 것을 알 수 있는데, 출력된 것을 보면 알겠지만 연도/월/일/시/분/초/요일 등의 정보를 갖고 있습니다.

만약 나만의 포맷으로 이 Date 정보를 변환하고 싶을 경우엔 바로 이 정보들만 포함시켜주면 됩니다.

그러면 이를 어떻게 구현해야 될까요?

다행히도 Java에서는 Date 클래스와 String 클래스 사이에 파싱을 도와주는 SimpleDateFormat 클래스가 있습니다.

바로 살펴보겠습니다!

 

 

Date to String

SimpleDateFormat의 생성자에 파라미터로 포맷을 지정해주고, format() 메소드를 사용하면 됩니다.

포맷 문자에 대해 잘 모르시는 분들을 위해 대표적인 것들만 말씀드리자면,

 

y - 연도

M - 월 ('분'을 의미하는 소문자 m과 혼동 주의)

d - 일

H - 시간

m - 분 ('월'을 의미하는 대문자 M과 혼동 주의)

s - 초

 

이제 이를 활용한 예제를 살펴보겠습니다!

import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        Date date = new Date();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String str = format.format(date);
        System.out.println(str);
    }
}

 위 코드를 실행하면 다음과 같은 결과가 나옵니다.

2019-09-01 23:19:45

 

String to Date

Date to String도 살펴봤으니 반대도 살펴봐야겠지요.

같은 타입으로 변환해볼 텐데, 혹시나 다른 타입으로 변환하고 싶으신 분은 SimpleDateFormat의 생성자에서 커스텀하시면 되겠습니다.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
    try {
            String str = "2019-09-02 08:10:55";
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = format.parse(str);
            System.out.println(date);
        } catch(ParseException e) {
            e.printStackTrace();
        }
    }
}

특별히 parse() 메소드의 경우 ParseException을 던져주기 때문에 그에 대한 처리가 필요합니다.

 

위 코드를 실행하면 다음과 같은 결과가 나옵니다.

Mon Sep 02 08:10:55 KST 2019

 

저는 2018 카카오 블라인드 채용 1차 문제로 나왔던 "추석 트래픽" 문제에서 이 문법을 사용하여 해결했었습니다.

 

[Programming/Algorithm] - [카카오 블라인드 테스트] 추석 트래픽 - Java

반응형
반응형