반응형
해당 글에서는 String 타입을 Date 타입으로 변환하거나 Date 타입을 String 타입으로 변환하거나 Date 타입을 연산하는 방법에 대해서 확인해 봅니다.
1) SimpleDateFormat
💡 SimpleDateFormat 이란?
- 날짜와 시간을 원하는 형태의 문자열로 변환하거나 문자열을 날짜와 시간으로 변환할 때 사용하는 클래스를 의미합니다.
- 해당 클래스는 java.text 패키지 내에 포함되어 있습니다.
💡[참고] SimpleDateFormat 주요 메서드
메서드 | 리턴 데이터 타입 | 설명 |
SimpleDateFormat(String pattern) | SimpleDateFormat | 해당 pattern을 사용하여 SimpleDateFormat 객체를 생성합니다.(하단에 패턴 참고) |
format(Date date) | Date | 매개 변수로 전달된 Date 객체를 SimpleDateFormat이 지정한 pattern에 따라 문자열로 변환합니다. |
parse(String source) | String | 매개 변수로 전달된 문자열을 SimpleDateFormat이 지정한 pattern에 따라 Date 객체로 변환합니다. |
💡 [참고] 날짜 타입 패턴
패턴 | 설명 | 예시 |
G | 서기/전기 지정자 | AD(G) |
y | 년 | 1996(yyyy), 96(yy) |
Y | 주년 | 2009(YYYY), 09(YY) |
M | 연중 월 (문맥에 따라 다름) | July(MMMM), Jul(MMM), 07(MM) |
L | 연중 월 (독립형태) | July(LLLL), Jul(LLL), 07(LL) |
w | 연중 주 | 27(w) |
W | 월간 주 | 2(W) |
D | 연중 일 | 189(D) |
d | 월간 일 | 10(d) |
F | 월간 요일 | 2(F) |
E | 주간 요일 이름 | Tuesday(EEEE), Tue(EEE, EE, E) |
u | 주간 요일 번호 (1 = 월요일, ..., 7 = 일요일) | 1(u) |
a | 오전/오후 표시 | PM(a) |
H | 하루 중 시 (0-23) | 0(H), 00(HH) |
k | 하루 중 시 (1-24) | 24(k, kk) |
K | 오전/오후 시간 (0-11) | 0(K, KK) |
h | 오전/오후 시간 (1-12) | 12(h, hh) |
m | 시간 내 분 | 3(m), 03(mm) |
s | 분 내 초 | 55(s) |
S | 밀리초 | 978(S) |
z | 시간대(Time zone) | Pacific Standard Time(zzzz), PST(zzz), GMT-08:00(zz) |
Z | 시간대(Time zone) | GMT-08:00(ZZZZ), -08:00(ZZ, Z) |
X | 시간대(Time zone) | -08:00(xxxx, xxx), -0800(xx) -08(x) |
2) String to Date
💡 해당 예시에서는 문자열로 되어 있는 Date 타입을 파싱 하여서 Date 타입으로 구성합니다.
💡 formatter.parse(String)를 이용하여서 문자열을 Date 타입으로 변환합니다.
/*
* Convert String to Date
*/
String str = "2019/05/01 00:59:29";
SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date strToDate = null;
try {
strToDate = formatter.parse(str);
log.debug("strToDate :: " + strToDate); // strToDate :: Wed May 01 00:59:29 KST 2019
} catch (ParseException e) {
throw new RuntimeException(e);
}
3) Date to String
💡 해당 예시에서는 문자열 Date 타입으로 파싱하는 예시입니다. Date 타입의 특정 요소에 대해서도 출력이 가능합니다.
💡 formatter.format()를 이용하여서 Date 타입을 String으로 변환합니다.
/*
* Convert Date to String
*/
Date = "2019/05/01 00:59:29";
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
SimpleDateFormat formatter3 = new SimpleDateFormat("HH");
String fullStr = formatter2.format(strToDate);
log.debug("fullStr :: " + fullStr); // 2019/05/01 00:59:29
String hourStr = formatter3.format(strToDate);
log.debug("hourStr :: " + hourStr); // 00
4) Date 연산 방법
💡 해당 예시에서는 Date 타입의 연산을 위해서 9시간을 더하는 예시입니다
💡 Calendar 객체를 통해서 날짜를 계산합니다
/*
* Date 타입의 합을 구합니다.
*/
String str4 = "2019/05/01 00:59:29";
SimpleDateFormat formatter4 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date resultDate;
Date strToDate2 = null; // Wed May 01 00:59:29 KST 2019
try {
strToDate2 = formatter.parse(str4);
log.debug("strToDate :: " + strToDate2);
// Date 타입에 9시간을 더합니다.
Calendar cal1 = Calendar.getInstance();
cal1.setTime(strToDate2); // 시간 설정
cal1.add(Calendar.HOUR, 9); // 시간 연산
resultDate = new Date(cal1.getTimeInMillis());
log.debug("resultDate :: " + resultDate);
} catch (ParseException e) {
throw new RuntimeException(e);
}
Calendar cal1 = Calendar.getInstance();
cal1.setTime(resultDate); // 시간 설정
cal1.add(Calendar.HOUR, 9); // 시간 연산
Date resultSumDate = new Date(cal1.getTimeInMillis()); // Wed May 01 09:59:29 KST 2019
오늘도 감사합니다. 😀
반응형
'Java > Short 개발' 카테고리의 다른 글
[Java/Short] 배열/리스트 내의 최소값, 최대값 찾는 방법 : min, max (0) | 2023.05.02 |
---|---|
[Java/Short] 배열/리스트 중복제거 방법 : 전체, 인접한 요소 중복 제거 (0) | 2023.05.01 |
[Java/Short] 문자열 내의 문자 개수 구하는 방법 : count, charAt, forEach, replace (0) | 2023.04.29 |
[Java/Short] 배열에서 순차적으로 숫자 값 채우는 방법: for, setAll, rangeClose, range (0) | 2023.04.28 |
[Java/Short] 문자열 배열 <-> 정수 배열 변환 방법 (0) | 2023.03.29 |