Server/Java
Java Calendar 쓸 때 유의 사항
selfstarter
2020. 6. 25. 20:52
Java Calendar 쓸 때 유의 사항
java Calendar를 쓸 때 date의 날짜를 Calendar에 넣어서 쓰려고 하는 경우 문제가 발생한다.
Calenar의 month는 0부터 시작해서 그런지 date의 날짜를 그대로 넣으면
다음달로 출력된다.
예를들어 Date가 6월이면 0부터 시작하는 Calendar는 6이니까 7월로 인식하는 듯 하다
버그가 꽤 잘 나올 것 같다..
public class TestMain {
public static void main(String[] args) {
long now = System.currentTimeMillis();
final Date date = new Date(now);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
Calendar mCal = Calendar.getInstance();
final SimpleDateFormat yearFormat = new SimpleDateFormat("yyyy", Locale.KOREA);
final SimpleDateFormat monthFormat = new SimpleDateFormat("MM", Locale.KOREA);
final SimpleDateFormat dayFormat = new SimpleDateFormat("dd", Locale.KOREA);
mCal.set(Integer.parseInt(yearFormat.format(date))
, Integer.parseInt(monthFormat.format(date))
, Integer.parseInt(dayFormat.format(date)));
System.out.println(simpleDateFormat.format(date));
System.out.println(mCal.getTime().toString()); // 다음달이 나옴
}
}
또 요일을 확인할 때 Calendar.get(Calendar.DAY_OF_WEEK);
DAY_OF_WEEK를 사용한다. 이 때 return값은 다음과 같이
상수로 선언되어있다.일요일부터 시작이라서 이것 역시 헷갈린다...
Calendar.SUNDAY 1
Calendar.MONDAY 2
Calendar.TUESDAY 3
Calendar.WEDNESDAY 4
Calendar.THURSDAY 5
Calendar.FRIDAY 6
Calendar.SATURDAY 7