๐ก ๊ธํ๊ฒ ํ์ง ๋ง๊ณ ํ๋์ฉ ํ๋ฆ์ ํ์ ํ๊ธฐโโ
์ฌ์ฉํ ๋ด์ฅ ํจ์
โพ new Date() = ํ์ฌ ๋ ์ง ๋ฐ ์๊ฐ
โพ setInterval() = (์ฌ์ฉํ ํจ์๋ช , ์คํ ๊ฐ๊ฒฉ(์๊ฐ)) โ 1์ด๋ 1000 ์ผ๋ก ํ๊ธฐํ๋ค.
โพ Math.floor() = ๋ด๋ฆผํจ์ โ (5.1 = 5 , 5.9 = 5)
โพ String() = ์ ์๋ก ๋ง๋ค์ด์ฃผ๊ธฐ
โพ padStart = ์ง์ ํ ๋น๊ณต๊ฐ padding ๋ฃ์ด์ฃผ๊ธฐ (์ง์ ํ ๊ณต๊ฐ, ๋ฃ์ด์ค ์๋ฃํ) โ (2, "0")
1. html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<link rel="stylesheet" href="./css/styles.css">
</head>
<body>
<h1 class="practice">ํฌ๋ฆฌ์ค๋ง์ค๊น์ง ๋จ์ ์๊ฐ </h1>
<h2 id="clock"></h2>
<script src="./js/index.js"></script>
</body>
</html>
2. js
const clocked = document.querySelector("#clock");
function setclocked() {
const setdate = new Date("2024-12-25T00:00:00");
const newdate = new Date();
const distance = setdate - newdate;
const seconds = String(Math.floor((distance / 1000) % 60)).padStart(2, "0");
const minutes = String(Math.floor((distance / (1000 * 60)) % 60)).padStart(2, "0");
const hours = String(Math.floor((distance / (1000 * 60 * 60)) % 24)).padStart(2, "0");
const day = String(Math.floor(distance / (1000 * 60 * 60 * 24))).padStart(2, "0");
clocked.innerText = `${day}์ผ ${hours}์ ${minutes}๋ถ ${seconds}์ด`;
}
setclocked();
setInterval(setclocked, 1000);
โณ ํ๋์ฉ ์ดํด๋ณด์
const setdate = new Date("2024-12-25T00:00:00");
const newdate = new Date();
-> setdate ์ D-day ์ง์ ํ ๋ ์ง๋ฅผ ์ ๋๋ค.
-> newdate ์ ํ์ฌ ๋ ์ง๋ฅผ ์ ๋๋ค. (Date() ์ธ์์ ์๋ฌด๊ฒ๋ ์ ์ง ์์ผ๋ฉด ํ์ฌ ์๊ฐ์ ์์ฑ ํด์ค)
const distance = setdate - newdate;
-> ๋ ํจ์๋ฅผ ๋บ๋๋ค.
๐ก Date ํจ์๋ก ์์ฑํ Date ๊ฐ์ฒด๋ ์ฐ์ฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
const seconds = String(Math.floor((distance / 1000) % 60)).padStart(2, "0"); // ์ด
const minutes = String(Math.floor((distance / (1000 * 60)) % 60)).padStart(2, "0"); // ๋ถ
const hours = String(Math.floor((distance / (1000 * 60 * 60)) % 24)).padStart(2, "0"); // ์๊ฐ
const day = String(Math.floor(distance / (1000 * 60 * 60 * 24))).padStart(2, "0"); // ์ผ
-> 1์ด๋ 1000๋ฏธ๋ฆฌ ์ด ์ ๋๋ค. ์ด ๋จ์์ 1000์ผ๋ก ๋๋ ์ฃผ๊ธฐ
-> ๋ชจ๋๋ฌ(%) ์ฐ์ฐ์ ์ฌ์ฉํด์ผ D-day ๊ฐ์ ๊ตฌํ ์ ์๋ค. ์๊ฐ,๋ถ,์ด ๋จ์์ ๋ง์ถฐ 60, 24 ๋ก ๋๋ ์ฃผ์.
(์ค๋ช ํ๊ณ ์ดํดํ๊ธฐ ๋ณต์กํ๋ค ์ด๋ ๊ฒ ๋ง๋ค์ด ๋์ ๋ถ๋ค์๊ฒ ๊ฐ์ฌํ์ ์๋ฉด ๋ค์ณ ๐)
-> Math.floor ๋ ๋๋๊ธฐ ํ ์์์ ์ ์์ ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.
-> padStart ๋ฅผ ์ฌ์ฉํด์ 1,2,3 ์ด ์๋ 01,02,03 ์ผ๋ก ๋ง๋ค์ด์ฃผ๊ธฐ
-> "01","02","03" ๋ฌธ์์ด์ด ๋๋ฏ๋ก String ์ผ๋ก ๋ฐ๊ฟ์ค๋๋ค.
clocked.innerText = `${day}์ผ ${hours}์ ${minutes}๋ถ ${seconds}์ด`;
-> ์์์ ๊ตฌํ ๋ณ์๋ค์ ๋ฃ์ด ํ๋ฉด์ ์ถ๋ ฅํด ์ฃผ๊ธฐ