[자바] JAVA날짜, 시간 세팅 하고 싶을 때 : 연도 날짜 시간 클래스 GregorianCalendar(Feat.SimpleDateFormat)
개요
자바를 사용할 때 날짜를 넣어줄 때가 많다. 그래서 자바에는 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()함수를 사용하면 되겠다.(당연)