728x90
윤년이란 ?
윤달이나 윤일이 드는 해로서,
풀어 설명하면 '역법을 실제 태양년에 맞추기 위해 하루 또는 월을 끼우는 해' 이다.
지구가 태양을 도는 데에는 약 365일 4시간 정도가 걸리므로
365일을 제외한 시간들을 모야 태양력에서는 4년 마다 한 번 2월 29일을 두어 하루를 늘린다.
그렇다면 윤년을 구해보자 !
윤년이 아닌 년을 '평년' 이라고하는데 , 조건은 이렇다
윤년 : 4년마다 한번. 400년이 되는 주기는 윤년이다.
평년 : 100년이 되는 주기는 평년이다.
year, month, day 를 입력받아 윤년여부와 입력받은 날의 요일을 구하는 함수를 만들어보자
윤년은 4년마다 한번이므로 100년도 나눠떨어져서 윤년! 이아니라 평년으로 친다.
근데 또 400년주기는 윤년이다.
function isLeapYear(year) {
if ((year % 4 == 0 && year % 100 !== 0) || year % 400 == 0) {
return true; // 윤년인 경우
} else {
return false; // 윤년이 아닌 경우
}
}
function getDayOfWeek(year, month, day) {
const daysOfWeek = ['일', '월', '화', '수', '목', '금', '토'];
const date = new Date(`${year}-${month}-${day}`);
const dayOfWeek = date.getDay(); // 0 (일요일)부터 6 (토요일)까지의 값을 반환
return daysOfWeek[dayOfWeek];
}
// 사용 예시
const year = 2023;
const month = 5;
const day = 22;
const isLeap = isLeapYear(year);
const dayOfWeek = getDayOfWeek(year, month, day);
console.log(`윤년 여부: ${isLeap}`);
console.log(`입력받은 날짜의 요일: ${dayOfWeek}`);
결과
여기서 간단하게 짚고 넘어갈 부분이 있다.
바로 논리 연산자의 이해!
처음에 '( year % 4 == 0 && year % 100 !== 0) && year % 400 == 0 ' 이 조건이 되어야하지않나? 라고 생각했다.
하지만 예를 들어 year 이 2000 이라 할때, 해당 식으로 계산해보면
year % 4 == 0 -> true
year % 100 !== 0 -> false
(year % 4 == 0 && year % 100 !== 0 ) -> true && false -> false
year % 400 -> true ==> 결론적으로 ( T && F ) && T 가 되어 F 를 반환하여 윤년이 아니라고 된다.
그래서 '( year % 4 == 0 && year % 100 !== 0) || year % 400 == 0 ' 이 되어야지
( T && F ) || T 가 되어 T 를 반환할 수 있게 된다.
728x90
'jQuery && JS' 카테고리의 다른 글
jQuery | closet() 함수 (0) | 2023.05.18 |
---|---|
jQuery | 출생년도에 따라 배경색 변경 (0) | 2023.05.18 |
jQuery | 한 페이지 내의 모든 글자색 변경 (0) | 2023.05.16 |
jQuery | 서울 지역만 남기고 모두 지우기 (0) | 2023.05.16 |
jQuery | 경력을 기준으로 sort (0) | 2023.05.16 |