[Java] 날짜값 쉽게 변경하기(GregorianCalendar)
- Language/Java
- 2020. 12. 10.
많은 사람들이 SimpleDateFormat에 대해서 이제는 많이들 알고 있을 것이다. 그러나, Calendar를 핸들링하는 것이 익숙치 않을 것이라 생각한다. 이런걸 만들어 볼 이유도 없고 보통 DB를 핸들링하지 자바에서 날짜를 핸들링하는 것이 많지 않기 때문이다.
자바에는 GregorianCalendar라는 클래스가 존재한다. 이 캘린더 클래스를 이용하면 날짜값을 매우 쉽게 핸들링하는 것이 가능하다.
getTime 함수
GregorianCalendar cal = new GregorianCalendar();
System.out.println(cal.getTime());
아무것도 건드리지 않고 위 그레고리안캘린더를 생성 후 getTime을 출력하면
결과
Thu Dec 10 18:12:05 KST 2020
이와 같이 문자형태로 날짜값이 출력되어 나온다. 그러나 우리가 이런 날짜값을 원할리가 없다. 이 값을 SimpleDateFormat에 넣어본다.
SimpleDateFormat에 반영
GregorianCalendar cal = new GregorianCalendar();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
System.out.println(sdf.format(cal.getTime()));
결과
20201210
현재 필자가 포스팅하는 날짜인 20201210 값이 잘 출력된 것을 확인할 수 있다. 즉, Date 객체가 아니더라도 GregorianCalendar 클래스를 사용한 getTime 객체는 날짜값이 잘 적용된 것을 확인할 수 있는데 이유는 getTime()이라는 녀석이 Date 객체를 반환하기 때문이다.
getTime 메소드
/**
* Returns a <code>Date</code> object representing this
* <code>Calendar</code>'s time value (millisecond offset from the <a
* href="#Epoch">Epoch</a>").
*
* @return a <code>Date</code> representing the time value.
* @see #setTime(Date)
* @see #getTimeInMillis()
*/
public final Date getTime() {
return new Date(getTimeInMillis());
}
이제 이 그레고리안 캘린더를 이용하여 날짜값을 제어해보기로 한다.
날짜제어(예시, 하루전)
cal.add(GregorianCalendar.DATE, -1); // 하루전
System.out.println(sdf.format(cal.getTime()));
결과
20201209
날짜제어(예시, 한달전)
// 한달 전날
cal.add(GregorianCalendar.MONTH, -1);
System.out.println(sdf.format(cal.getTime()));
결과
20201109
날짜제어(예시, 일주일전)
// 일주일 전
cal.add(GregorianCalendar.WEEK_OF_MONTH, -1);
System.out.println(sdf.format(cal.getTime()));
결과
20201102
반응형
'Language > Java' 카테고리의 다른 글
[Java] 자바, 삼항연산자(ternary operator) 사용방법 (0) | 2021.01.27 |
---|---|
[Java] 자바 IndexOf로 모든 위치 찾는 방법 (0) | 2021.01.02 |
[Java] 자바 랜덤함수(Random) 및 Seed 설명 (0) | 2020.12.08 |
[Java] 자바로 지정한 폴더 및 하위 폴더 탐색(재귀적 함수) (0) | 2020.11.29 |
[Java] 자바로 로또 번호 생성하기 (0) | 2020.11.26 |