πΒ μ€λ μ½μ λ²μ : Mission#1
const merry = document.querySelector(".js-clock");
function getClock() {
const christmas = new Date("2021, 12, 25");
const date = new Date();
const timeGap = christmas - date;
const xDay = Math.floor(timeGap / (1000 * 60 * 60 * 24));
const xHours = Math.floor(
(timeGap - xDay * 1000 * 60 * 60 * 24) / (1000 * 60 * 60)
);
const xMinutes = Math.floor((timeGap % (60 * 60 * 1000)) / (60 * 1000));
const xSeconds = Math.floor((timeGap % (60 * 1000)) / 1000);
const day = String(xDay).padStart(2, "0");
const hours = String(xHours).padStart(2, "0");
const minutes = String(xMinutes).padStart(2, "0");
const seconds = String(xSeconds).padStart(2, "0");
merry.innerText = `${day}d ${hours}h ${minutes}m ${seconds}s`;
}
getClock();
setInterval(getClock, 1000);
const getThisChristmasDate = () => {
const thisYear = new Date().getFullYear();
return new Date(`${thisYear}, 12, 25`);
};
const getRemainingMillisecondTo = targetDate => targetDate - new Date();
const convertNumToZeroPaddedStr = sec => String(sec).padStart(2, "0");
const parseMillisecondTo = (millisecond, targetType) => {
const secondFrom = {
day: 60 * 60 * 24,
hour: 60 * 60,
min: 60,
};
const second = millisecond / 1000;
let parsed = 0;
switch (targetType) {
case "day":
parsed = second / secondFrom["day"];
break;
case "hour":
parsed = (second % secondFrom["day"]) / secondFrom["hour"];
break;
case "minute":
parsed = (second % secondFrom["hour"]) / secondFrom["min"];
break;
case "second":
parsed = second % secondFrom["min"];
break;
default:
throw "Wrong date type";
}
return convertNumToZeroPaddedStr(Math.floor(parsed));
};
const renderRemainingTimeToChristmas = element => {
const thisChristmasDate = getThisChristmasDate();
const remainingMillisecond = getRemainingMillisecondTo(thisChristmasDate);
const day = parseMillisecondTo(remainingMillisecond, "day");
const hour = parseMillisecondTo(remainingMillisecond, "hour");
const minute = parseMillisecondTo(remainingMillisecond, "minute");
const second = parseMillisecondTo(remainingMillisecond, "second");
element.innerText = `${day}d ${hour}h ${minute}m ${second}s`;
};
const clock = document.querySelector(".js-clock");
setInterval(() => renderRemainingTimeToChristmas(clock), 1000);