반응형
문자열을 날짜 형식으로 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' 카테고리의 다른 글
[JAVA] replaceAll을 사용해서 특정 문자들을 지우기 (0) | 2022.11.29 |
---|---|
[JAVA] String index out of range 에러 발생하는 이유 (0) | 2022.11.27 |
[JAVA] 라이브러리를 사용하여 JSON 데이터 만들기 (ft. gson) (0) | 2022.11.23 |
[JAVA] renameTo와 move 함수를 사용하여 파일 이름 변경 및 이동하는 방법 (0) | 2022.11.21 |
[JAVA] 문자열을 split 함수를 사용해서 특정 구분자로 나눠보자 (0) | 2022.11.19 |