개발을 하다 보면 날짜나 시간을 처리해야할 일이 많습니다.
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
'major > Android' 카테고리의 다른 글
[Android] Fragment 구현 (0) | 2020.03.20 |
---|---|
구글 플레이에 앱 출시하기, 게시 보류 (0) | 2020.03.20 |
[Android] 애드몹(Admob) 전면 광고 달기 - 테스트 광고 (0) | 2020.03.18 |
[Android] 애드몹(Admob) 배너 광고 달기 - 테스트 광고 (2) | 2020.03.17 |
[Android] SQLite 값 listview로 보여주기 - SimpleCursorAdapter 사용법 (6) | 2020.03.16 |