Java/Short 개발

[Java/Short] 문자열 <-> Date 타입 간의 변환 방법 : + Date 연산

adjh54 2023. 4. 29. 16:46
728x170
해당 글에서는 String 타입을 Date 타입으로 변환하거나 Date 타입을 String 타입으로 변환하거나 Date 타입을 연산하는 방법에 대해서 확인해 봅니다.





1) SimpleDateFormat


💡 SimpleDateFormat 이란?

- 날짜와 시간을 원하는 형태의 문자열로 변환하거나 문자열을 날짜와 시간으로 변환할 때 사용하는 클래스를 의미합니다.
- 해당 클래스는 java.text 패키지 내에 포함되어 있습니다.

 

SimpleDateFormat (Java SE 11 & JDK 11 )

Parses text from a string to produce a Date. The method attempts to parse text starting at the index given by pos. If parsing succeeds, then the index of pos is updated to the index after the last character used (parsing does not necessarily use all charac

docs.oracle.com

 

💡[참고] 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

 
 
 
오늘도 감사합니다. 😀
 
 
 
 

그리드형