JAVA/요점정리

[자바] JAVA날짜, 시간 세팅 하고 싶을 때 : 연도 날짜 시간 클래스 GregorianCalendar(Feat.SimpleDateFormat)

진짠 2023. 3. 8. 13:49
728x90
개요

자바를 사용할 때 날짜를 넣어줄 때가 많다. 그래서 자바에는 Calendar라는 클래스가 존재한다.

그 중에서도 우리 나라 표준시인 GregorianCalendar에 대해 알아보고자 한다.

GregorianCalendar은 Calendar클래스를 상속받은 것으로 우리 나라 외 다른 나라 시간도 지원한다.

 

GregorianCalendar를 써보면서 가장 편리한 점이라면 날짜, 시간을 세팅하기가 굉장히 편리하다는 점이었다.

 

선언
//선언
GregorianCalendar cal = new GregorianCalendar();

생성자를 이용해 생성한다.

 

사용
System.out.println(cal.getTime());

//결과 
Wed Dec 10 18:12:05 KST 2022

값을 출력하면 이런 식으로 나온다. 

 

그래서 보통 SimpleDateFormat을 사용하여 원하는 날짜로 출력하기 위해 포맷해준다.

 

SimpleDateFormat

 

G 연대(BC, AD) AD
y 년도 2017
M 월(1~12) 12
w 해당 년도의 몇 번째 주(1~53) 52
W 해당 월의 몇 번째 주(1~5) 5
D 해당 연도의 몇 번째 일(1~366) 364
d 해당 월의 몇 번째 일(1~31) 30
F 해당 월의 몇 번째 요일(1~5) 5
E 요일(월~일) Sat
a 오전/오후(AM, PM) PM
H 시간(0~23) 21
h 시간(1~12) 9
K 시간(0~11) 9
k 시간(1~24) 21
m 분(0~59) 31
s 초(0~59) 8
S 1/1000초(0~999) 297
Z 타임존 +0900
z 타임존(RFC 822) KST

표를 참고해서 이 알파벳을 사용하여 포맷한다. 특별히 내가 자주 썼던 부분은 빨간색으로 색칠해 두었다.

 

SimpleDateFormat sdf = new SimpleDateFormat(); //선언

sdf.applyPattern("yyyyMMdd"); //사용
sdf.applyPattern("yyyy-MM-dd"); //사용
sdf.applyPattern("HH:mm:ss"); //사용
sdf.applyPattern("hh:mm:ss"); //사용
sdf.applyPattern("yyyy-MM-dd HH:mm:ss"); //사용

위의 예제문을 참고하여 날짜를 포맷할 수 있다.

 

포맷
String stdDate = sdf.format(cal.getTime()); //사용

위에서 자기가 사용하고 싶은대로 날짜를 포맷했다면 이런식으로 사용하면 된다. 

getTime() 함수를 사용하면 현재의 날짜를 불러올 수 있다.

 

하지만 코딩을 하면 현재 날짜만 갖고 오진 않는다.

 

하루전, 한달전, 일년전 혹은 그 후 날짜를 갖고 오고 싶을 때도 있다.

 

하루전, 한달전 날짜 가져오기
cal.add(Calendar.DATE, -1); //하루전

cal.add(Calendar.DATE, 1); //하루 뒤

cal.add(Calendar.MONTH, -1); //한달 전

cal.add(Calendar.MONTH, 1); //한달 후

cal.add(Calendar.WEEK_OF_MONTH, -1); //일주일 전

cal.add(Calendar.WEEK_OF_MONTH, 1); //일주일 후

이런 식으로 날짜를 세팅할 수 있다. 

 

원하는 날짜 세팅하기
public GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second)

GregorianCalendar는 다음과 같이 년월일시분초 순서의 형태를 입력받는다.

//선언
GregorianCalendar cal = new GregorianCalendar(2022, Calendar.JANUARY, 5, 1, 24);
//2022년 1월 5일 1시 24분

따라서 처음 생성할 때 원하는 날짜를 다음과 같이 지정하여 날짜를 생성할 수 있다.

cal.set(Calendar.YEAR, 2018);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DATE, 5);

따로 세팅을 원하면 set()함수를 사용해 다음과 같이 세팅을 해줄 수 있다.

따로 값을 가져오고 싶다면 get()함수를 사용하면 되겠다.(당연)

728x90