Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 오늘부터 n일 뒤의 요일 구하기 – Date 객체 활용법

숫자 n을 유일한 인수로 받는 자바스크립트 함수를 작성해 보겠습니다.

이 함수는 먼저 자바스크립트의 Date 객체를 사용해 오늘의 요일을 확인한 뒤, 오늘부터 n일 후가 무슨 요일인지 계산하여 반환해야 합니다.

동작 예시

예를 들어, 오늘이 월요일이고 n = 2라면 결과는 다음과 같습니다.

Wednesday

예제 코드

다음은 이를 구현한 코드입니다.

const num = 15;
const findNthDay = num => {
    const weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    const day = new Date().getDay();
    const daysFromNow = num % 7;
    return weekday[(day + daysFromNow) % 7];
};
console.log(findNthDay(num));

코드 설명

new Date().getDay()는 오늘의 요일을 나타내는 숫자를 반환합니다. 일요일은 0, 월요일은 1, … 토요일은 6에 해당합니다. 여기에 n을 7로 나눈 나머지를 더한 뒤 다시 7로 나누면, 목표 날짜의 요일 인덱스를 얻을 수 있습니다. 배열에는 각 인덱스에 맞는 요일 이름이 저장되어 있으므로, 해당 값을 그대로 반환하면 됩니다.

n을 7로 나눈 나머지(num % 7)를 사용하는 이유는 일주일이 7일로 순환하기 때문입니다. 예를 들어 15일 뒤와 1일 뒤의 요일은 항상 같습니다.

출력

콘솔에 출력되는 결과는 다음과 같습니다.

Friday

대안: toLocaleDateString 활용하기

배열 없이 더 간결하게 처리하고 싶다면 Date 객체의 setDate()toLocaleDateString() 메서드를 조합할 수도 있습니다.

const findNthDay = num => {
    const d = new Date();
    d.setDate(d.getDate() + num);
    return d.toLocaleDateString("en-US", { weekday: "long" });
};
console.log(findNthDay(15));

이 방식은 실제 날짜 연산을 수행하므로 월이나 연도가 바뀌는 경우에도 정확하게 동작하며, 로케일 옵션을 변경하면 한국어 요일(예: "금요일")로도 손쉽게 출력할 수 있습니다.