본문 바로가기

major/Android

[JAVA] Calendar 사용법 정리

개발을 하다 보면 날짜나 시간을 처리해야할 일이 많습니다.

JAVA로 개발할 때 사용가능한 Calendar, Date 사용법을 정리해봤습니다.

1. 오늘 날짜 출력하기

Calendar calendar = Calendar.getInstance();
Log.i("DATE",calendar.getTime().toString());

2. 원하는 포맷으로 출력하기

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.KOREA);
Log.i("format",sdf.format(calendar.getTime()).toString());

SimpleDateFormat을 이용해서 원하는 포맷으로 출력이 가능합니다.

3. 날짜 비교하기

compareTo함수를 이용합니다.

Calendar calendar2 = Calendar.getInstance();
int cmp = calendar.compareTo(calendar2);
Log.i("Compare",Integer.toString(cmp));

calendar와 calendar2의 날짜 비교를 하면 날짜에 따라서 다음과 같은 결과값이 나옵니다.

1. calendar = calendar2 : 0
2. calendar > calendar2 : 1
3. calendar < calendar2 : -1

예를들어, calendar가 2020년3월1일이고 calendar2가 2020년3월3일이라면, calendar2>calendar이기 때문에 결과값은 -1 이 됩니다.

4. String to Calendar

날짜를 처리하다 보면 String 값으로 저장한 걸 다시 불러와서 처리해야할 일이 생깁니다.

그럴때는 다음과 같이 String을 Date로 parse 한 후 Calendar에 저장하면 됩니다.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.KOREA);
String str = "2020-03-01 12:00:01";
try {
	Date date = sdf.parse(str);
	calendar.setTime(date);
} catch (ParseException e) {
	e.printStackTrace();
}
Log.i("DATE",calendar.getTime().toString());

 

 

5. 날짜 가져오기

get() 함수를 이용합니다.

Log.i("GET YEAR",Integer.toString(calendar.get(Calendar.YEAR)));

calendar의 연도를 가져오는 코드입니다.

YEAR 말고도, MONTH, DATE, HOUR, MINUTE, SECOND, MILLISECOND 등을 사용해 다양한 정보를 가져올 수 있습니다.

6. 날짜 더하고 빼기

add() 함수를 이용합니다.

calendar.add(Calendar.YEAR,1);
calendar.add(Calendar.MONTH,-1);

첫번째 코드는 calendar의 년도에 1을 더합니다. 만약 2020년이라면 2021년이 됩니다.

두번째 코드는 calendar의 달에 1을 뺍니다. 만약 12월이라면 11월이 됩니다.

2와 같이 YEAR,MONTH 말고도 다양한 field를 사용해서 날짜를 더하고 뺄 수 있습니다.

7. 원하는 날짜로 변경하기

set() 함수를 이용합니다.

calendar.set(2020,Calendar.MARCH,1);
calendar.set(Calendar.YEAR,2021);

첫번째 코드는 set(int year, int month, int date)를 사용한 코드입니다.

실행하면 2020년 3월 1일로 변경됩니다.

두번째 코드는 필드를 사용해서 변경한 코드입니다. 년도만 2021년으로 변경됩니다.

 

매번 개발할 때 마다 검색하다 지쳐서, 이번에는 확실하게 기억하고자 공부하고 정리했습니다.

초보 개발자여서 제가 많이 쓰는 기능만 정리했는데, 도움이 되었으면 좋겠습니다.


잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.

이 포스팅이 도움이 되었다면 공감 부탁드립니다.

궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다:D