본문 바로가기

프로그래밍/Java

19.12.18) Java - Calendar 프로젝트

삼항 연산자(if)


if문을 간결하게 작성할 수 있다.

int count = 7;
int delim = (count > 6) ? 0 : count;
// delim == 0 

Double to int

int x = (int)Math.floor(year / 4);

달력 계산 알고리즘

생각 외로 달력이라는 녀석이 쉽지는 않다는 것을 깨달은 오늘..
하지만 개념만 이해한다면 충분히 구현할 수 있었다. 피하지 않는다면 시간이 걸리더라도 해낼 수 있다.

개념

- 1년 1월 1일부터 입력받은 현재 년도와 날짜까지 전체 날짜의 수를 구한다.
- 윤년 구하는 식 : (year / 4) - (year / 100) + (year / 400)
- 윤년일 때는 1일을 추가해야 한다

  1. 기준 날짜 (1970.1.1)를 정한 뒤, 기준 날짜부터 입력한 년도와 월까지 전체 날짜의 수를 구한다.
  2. 1970.1.1의 요일은 목요일이기 때문에 STANDARD_WEEKDAY = 4로 설정한다.
  3. 1970년부터 입력한 년도까지 반복문을 실행하며 윤년이면 366일 평년이면 365일을 count에 더한다.
  4. 년도의 합이 끝나면 1월부터 입력한 월까지 반복문을 실행하며 더한다.
  5. 구한 전체 날짜에 STANDARD_WEEKDAY를 더하고 7로 나눠서 나머지가 0 = Sun, 1 = Mon,..., 6 = Sat이라는 것을 이용한다.

주의사항

  • 입력받은 년도와 월에 -1을 해야 한다. 왜냐하면 2019년 7월을 입력하는 건 2019년 7월 달력을 보고 싶기 때문이다.
  • 하지만 2019년 7월을 입력하면 2020년 7월까지 날짜를 계산하기 때문에 리턴 값은 2020년 8월의 첫 번째 요일이 된다.