코딩/JAVA

[JAVA] SimpleDateFormat 오전, 오후 포함 문자열 날짜 형식 변경

밤유리 2022. 11. 5. 20:46
반응형

 

문자열을 날짜 형식으로 DB에 넣어야 하는데 
한국어로 '오전', '오후'가 포함되어 있으면 어떻게 해야 할까?
// 변경해야하는 문자열
String target = "2017-07-25 오후 11:40:33";

 

 

 


 

 

날짜 형식을 변경하고 싶을 때는 JAVA에서 지원하는

SimpleDateFormat을 이용하여 변경할 수 있다.

// 첫번째 SimpleDateFormat 선언
SimpleDateFormat formatOne = new SimpleDateFormat("yyyy-MM-dd a KK:mm:ss", Locale.KOREA);

여기에서 지역 설정을 Locale.KOREA 넣어주지 않으면 에러가 발생하였다.
(나의 경우에는 넣어줘야 에러가 발생하지 않았다...)

 

 

 

다음은 출력해 주는 코드를 입력해 주고 실행해 보니

결과 잘 나오는 것을 확인할 수 있다.

Date dateOne = formatOne.parse(target);
System.out.println("첫번째 = " + dateOne.toString());

첫번째 변경 확인 결과

 

 

 

 

하지만

Tue Jul 25 23:40:33 KST 2017

이 결과만으로는 DB의 Datetime 컬럼에는 데이터를 넣을 수 없었는데...

(왜지.. 왜냐고...)

그래서 다시 한번 SimpleDateFormat을 사용하였다.

// 첫번째 SimpleDateFormat 선언
SimpleDateFormat formatOne = new SimpleDateFormat("yyyy-MM-dd a KK:mm:ss", Locale.KOREA);

// 두번째 SimpleDateFormat 선언
SimpleDateFormat formatTwo = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.KOREA);

 

 

 

그리고 다시 결과를 출력해주는 코드를 작성하고 실행해 보았다.

// 첫번째 변경
Date dateOne = formatOne.parse(target);
System.out.println("첫번째 변경 = " + dateOne.toString());

// 두번째 변경
String dateTwo = formatTwo.format(dateOne);
System.out.println("두번째 변경 = " + dateTwo);

두번째 변경 확인 결과

 

2017-07-25 23:40:33

이렇게 변경 후 DB에 넣어 주니까 데이터가 잘 들어갔다. (캬..!!)

 

 

 

 

여기에서 참고로 SimpleDateFormat에 변경되는 시간이 KK와 HH가 있는데 이 차이는 

KK : (am, pm) 0 -11 의미하고 HH : 0 -23 의미한다고 한다.

(자세한 건 직접 변경해 보면서 결과를 보면 좋을 거 같다.)

 

그리고 

parse( ) 는 String 파라미터를 받아 Date 로 반환하고

format( ) 은 Date 파라미터를 받아 String 으로 반환한다.

 

 

 

 


 

[ 참고 사이트 ]

 

[JAVA] SimpleDateFormat 오전/오후 파싱하기~

오전/오후가 포함된 날짜를 파싱하기 위해 아래와 같이 코딩을 하였습니다. String data = "2011-10-31 오후 01:20"; DateFormat dateParser = new SimpleDateFormat("yyyy-MM-dd a HH:mm"); System.out.println(dateParser.parse(data));

vicki.tistory.com

반응형