Clock
#1. Interval
Interval์ด๋? '๋งค๋ฒ' ์ผ์ด๋์ผ ํ๋ ๋ฌด์ธ๊ฐ๋ฅผ ๋งํ๋ค. ์๋ฅผ ๋ค์ด ๋งค 2์ด๋ง๋ค ์ด๋ ํ ์ผ์ ๋ฐ์ํ๊ฒ ํ๊ณ ์ถ๋ค๋ฉด, ๊ทธ๋ Interval๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ ๊ฒ์ด๋ค. JavaScript์์๋ ์ด ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณด์ ํ๊ณ ์๋ค.
Interval๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด setInterval(function, ms)
์ ์ฌ์ฉํ๋ฉด ๋๋ค. ์ฒซ ๋ฒ์งธ argument๋ ํธ์ถํ ํจ์์ ์ด๋ฆ์ ๋ฃ์ด ์ฃผ๋ฉด ๋๊ณ , ๋ ๋ฒ์งธ argument๋ ํธ์ถ๋๋ ํจ์์ ๊ฐ๊ฒฉ์ ๋ช ms๋ก ํ ์ง ๋ฃ์ด ์ฃผ๋ฉด ๋๋ค.
clock.js ๋ผ๋ ์ด๋ฆ์ JS ํ์ผ์ ๋ง๋ค์ด ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ์๋ค. sayHello๋ผ๋ ์ด๋ฆ์ ํจ์๋ก console์ Hello๊ฐ ์ฐํ๋๋ก ๊ตฌํํ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ง๊ธ ์ฐ๋ฆฌ์๊ฒ ๊ฐ์ฅ ์ค์ํ, Interval์ ์ธํ ํด ์ฃผ๊ณ ์ ์ฅํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด ๋ณด๋ฉด 5000ms(5์ด)๋ง๋ค console์ Hello๊ฐ ์ฐํ๊ฒ ๋๋ค.
์ฌ๊ธฐ์ ์ ์ํ ์ ํ ๊ฐ์ง. ์ฐ๋ฆฌ๊ฐ 5000ms๋ก ์ค์ ํ ๋งํผ ์๋ก๊ณ ์นจ์ ํ์ ๋ ๋ฐ๋ก console์ Hello๊ฐ ๋ํ๋์ง๋ ์๋๋ค. 5000ms๊ฐ ์ง๋ ํ, ๋ํ๋๊ธฐ ์์ํ๋ฉด์ ๋ฉ์ถ์ง ์๊ณ ๊ณ์ 5000ms๋ง๋ค Hello๊ฐ ์ฐํ๋ค.
function sayHello() {
console.log("Hello");
}
setInterval(sayHello, 5000);
#2. Timeout and Date
Timeout
์ฐ๋ฆฌ๋ setInterval์ ์๊ณ๋ฅผ ๊ตฌํํ๋ ๋ฐ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ ๊ฒ์ ์ ์ ์์ ๊ฒ์ด๋ค. ํ์ง๋ง, ๊ณ์ํด์ ํจ์๊ฐ ํธ์ถ๋๋ฉด ๊ทธ๊ฒ๋ ๋ถ๋ด์ด ๋์ง ์๊ฒ ๋๊ฐ...... setInterval ์์ด ๊ทธ๋ฅ ํจ์๋ฅผ ์คํํ๋ฉด ์ ์ฉํ Interval์ด ์์ผ๋ฏ๋ก ๋ช ์ด ๊ธฐ๋ค๋ฆด ํ์ ์์ด ๋ฐ๋ก console์ Hello๊ฐ ๋ํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฐ๋ฐ, 5์ด ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๋ํ๋๊ฒ ํ๊ณ ์ถ๋ค๋ฉด? ๊ทธ๋ฐ๋ฐ Interval์ ์ฌ์ฉํด์ ๋ฐ๋ณต๋๋ ํ์์ ๊ตฌํํ๊ณ ์ถ์ง ์๋ค๋ฉด? ์ด๋ timeout์ ์ฌ์ฉํ๋ฉด ๋๋ค.
setInterval๊ณผ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๊ฐ๋ค. setTimeout(function, ms)
๋ก ์ฌ์ฉํ๋ฉด ๋๋ค. ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ฐ์ง๋ง ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฌผ์ ํ์ธํ ์ ์์ ๊ฒ์ด๋ค.
function sayHello() {
console.log("Hello");
}
setTimeout(sayHello, 5000);
Date
Interval๊ณผ Timeout์ ์ฌ์ฉ๋ฒ์ ์์๋ค๋ฉด, ์ด์ ํ์ฌ ๋ ์ง์ ์๊ฐ์ ๋ํ๋ผ ์ ์๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. ๊ฐ๋ฐ์ ๋๊ตฌ console์ฐฝ์ new Date()
๋ฅผ ์
๋ ฅํ๋ฉด, ํ์ฌ ๋ ์ง์ ์๊ฐ์ด ๋ํ๋๊ฒ ๋๋ค. Date ๊ฐ์ฒด์ ๋ํ ๊ธฐ๋ฅ๋ค์ ๋ฌธ์๋ฅผ ํตํด ๋ ์์ธํ ์ ์ ์๋ค.
๋ํ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ๋ค์ ์๋ ํ๋ก ์ ๋ฆฌํด ๋์๋ค.
ํจ์ | ์ค๋ช |
new Date() | ํ์ฌ ๋ ์ง ๋ฐ ์๊ฐ |
getDate() | ์ผ์ |
getDay() | ์์ผ |
getFullYear() | ๋ ๋ |
getHours() | ์ |
getMinutes() | ๋ถ |
getSeconds() | ์ด |
๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๋ ์ด์ ์๊ณ๋ฅผ ๋ง๋ค ์ ์๋ค. getHours(), getMinutes(), getSeconds()๋ฅผ ์ฌ์ฉํด์ ๋ง์ด๋ค. ์ด๊ฐ ์ง๋ ๋๋ง๋ค ์๊ณ๋ ๊ณ์ํด์ ์ ๋ฐ์ดํธ๊ฐ ๋๋ฉด์ ์ฐ๋ฆฌ์๊ฒ ํ์ฌ ์๊ฐ์ ์๋ ค ์ฃผ์ด์ผ ํ๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์๋ Timeout๋ณด๋ค Interval์ด ๋์ฑ ์ ํฉํ ๊ฒ์ด๋ค. ์ฐ๋ฆฌ๋ ์ด ๋์ ์ฌ์ฉํ์ฌ ์๊ณ๋ฅผ ๊ตฌํํ๋ฉด ๋๋ค.
ํจ์๋ฅผ ์์ฑํ์ฌ console์ ๋ํ๋ด ํ ์คํธ๋ฅผ ์งํํด ๋ณด์. ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ์๋๋ console์ ์ง์ ํ ๋๋ก 1000ms ์ฆ, 1์ด๋ง๋ค ์๊ฐ์ด ์ฐํ ๋์ค๊ณ ์๋ค. ํจ์๋ฅผ setInterval ์ ์ ํธ์ถํ์ฌ ์คํํ๋ ๊ฒ์ ์์์ ์ค๋ช ํ๋ฏ์ด 1์ด๋ฅผ ๊ธฐ๋ค๋ฆฐ ํ, console์ ์ฐํ๋์ค๋ ํน์ฑ ๋๋ฌธ์ ๋จผ์ ํธ์ถํ์ฌ ์คํํด ์๊ฐ์ ๋ณด์ฌ ์ฃผ๊ธฐ ์ํจ์ด๋ค.
์ฐ๋ฆฌ์ ์ฝ๋๋ ๋งค ์ด๋ง๋ค ์๋ก์ Date ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ์์ผ๋ฉฐ, Date ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ ๋ณด ์ค์ ์, ๋ถ, ์ด๋ฅผ console์ ๋ํ๋ด๊ณ ์๋ค.
function getClock() {
const date = new Date();
console.log(`${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`);
}
getClock();
setInterval(getClock, 1000);
ํ์ง๋ง, ์ฐ๋ฆฌ๋ console์์ ์๊ฐ์ ํ์ธํ๋ ๊ฒ์ด ์๋ ํ์ด์ง์์ ํ์ธ์ ํด์ผ ํ๋ค. ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค.
HTML ํ์ผ์ clock์ด๋ผ๋ id๋ฅผ ๊ฐ์ง h2๋ฅผ ์ ๋ ฅํด ์ค ํ, ๊ธฐ๋ณธ ๊ฐ์ 00:00:00์ผ๋ก ๋๋ค. ๊ทธ๋ฆฌ๊ณ , JS ํ์ผ๋ก ๋์์ h2 ์์๋ฅผ ์์ clock์ผ๋ก ์ ์ธํด ์ค ๋ค, console.log๋ก ํํํ ๊ณณ์ clock.innerText๋ก ํํํด ์ฃผ๋ฉด ๋.
<form id="login-form" class="hidden">
<input required
maxlength="15"
type="text"
placeholder="What is your name?" />
<input type="submit" value="Log In" />
</form>
<h2 id="clock">00:00:00</h2> <!--default ๊ฐ์ 00:00-->
<h1 id="greeting" class="hidden"></h1>
const clock = document.querySelector("h2#clock");
function getClock() {
const date = new Date();
clock.innerText = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`;
}
getClock();
setInterval(getClock, 1000);
#3. padStart
๊ทธ๋ฌ๋, ๋ณด๊ธฐ์ ๋ถํธํ ์ ์ด ํ๋ ์๋ค. ์, ๋ถ, ์ด๊ฐ ํ ์๋ฆฌ ์๊ฐ ๋๋ฉด ๋ฑ ํ ์๋ฆฌ๋ก๋ง ํํ์ด ๋๊ณ ์๋ค. ์๋ ์ฌ์ง์ฒ๋ผ ๋ง์ด๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ด๊ฐ ๊ตฌํํ๊ณ ์ถ์ ๊ฒ์? string์ ๊ธธ์ด๊ฐ ์ต์ 2๊ฐ ๋๋๋ก ํ๋ ๊ฒ์ด๋ค. 0์ด ์๋ 00์ด ๋๋๋ก ๋ง์ด๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ํจ์ ์ญ์ JavaScript์์ ๋ด์ฅํ๊ณ ์๋ค. ๋ฐ๋ก padStart. string์์ ์ฌ์ฉํ ์ ์๋ ํจ์์ด๋ค. ์ฌ์ฉ ๋ฐฉ๋ฒ์ padStart(์ํ๋๊ธธ์ด, ๋จ๋์๋ฆฌ์์
๋ ฅ๋ string)
์ด๋ค. ์๋ฅผ ๋ค์ด, ๊ธธ์ด๊ฐ 1์ธ string์ ๊ธธ์ด๋ฅผ 2๋ก ๋ง๋ค์ด ์ฃผ๊ณ ์ถ๋ค๋ฉด, ์๋์ ๊ฐ์ด ์
๋ ฅํ๋ฉด ๋๋ค.
์ฐธ๊ณ ๋ก padEnd()
๋ padStart()
์ ๋ฌ๋ฆฌ ๋จ๋ ์๋ฆฌ์ ์
๋ ฅ๋ string์ด ๋ค์ ์
๋ ฅ๋๋ ํจ์์ด๋ค.
๊ทธ๋ผ ์ด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ๋, ์ฝ๋๋ฅผ ์์ ํด ๋ณด๋๋ก ํ์. ์, ๋ถ, ์ด๋ฅผ ๊ฐ์ ธ์ค๋ Date ๊ฐ์ฒด๋ค์ ๋ชจ๋ ์์๋ก ์ ์ธํด ์ฃผ๊ณ , ๊ทธ ๋ค์ padStart()๋ฅผ ๋ถ์ฌ ์ฃผ๋ฉด ๋ฌธ์ ํด๊ฒฐ! ์ธ ์ค ์์์ผ๋...... ์๋ฌ๊ฐ ๋ฌ๋ค. ์๋? ์์ ๋งํ๋ฏ์ด padStart()๋ string์ ์ฌ์ฉํ๋ ํจ์์ด๋ค. ํ์ง๋ง, ํ์ฌ ์, ๋ถ, ์ด๋ string์ด ์๋ number์ด๊ธฐ ๋๋ฌธ. ๊ทธ๋ ๋ค๋ฉด, number๋ฅผ string์ผ๋ก ๋ฐ๊ฟ ์ฃผ๋ฉด ๋ฌธ์ ๋ ํด๊ฒฐ๋๋ค.
function getClock() {
const date = new Date();
const hours = date.getHours().padStart(2, "0");
const minute = date.getMinutes().padStart(2, "0");
const second = date.getSeconds().padStart(2, "0");
clock.innerText = `${hours}:${minute}:${second}`;
}
string์ผ๋ก ๋ฐ๊ฟ ์ฃผ๊ธฐ ์ํด์๋ ํจ์๋ฅผ String()์ผ๋ก ๊ฐ์ธ ์ฃผ๋ฉด ๋๋ค. ์๋์ ์ฝ๋์ฒ๋ผ ๋ณ๊ฒฝํด ์ค๋ค๋ฉด ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๊ณ ๊น๋ํ๊ฒ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์ ๊ฒ์ด๋ค.
function getClock() {
const date = new Date();
const hours = String(date.getHours()).padStart(2, "0");
const minute = String(date.getMinutes()).padStart(2, "0");
const second = String(date.getSeconds()).padStart(2, "0");
clock.innerText = `${hours}:${minute}:${second}`;
}
Clock ํํธ๋ฅผ ๋ง๋ฌด๋ฆฌํ๋ฉฐ
์์ ํ๋ Login ํํธ๋ณด๋ค ์งง์ ๋น๊ต์ ๊ธ๋ฐฉ ํ์ตํ ์ ์๋ ํํธ์๋ค. ๋ด๊ฐ ์๋ ๊ฐ์ฒด๋ค๋ ๋ง์ด ๋์์ ๋์ฑ ์์ํ๊ธฐ๋ ํ๊ณ ...... ๊ทธ๋ฐ๋ฐ partStart์ partEnd๋ ์ฒ์ ๋ง๋๋ ๊ฐ์ฒด์๋ค. ์๋ง Date ๊ฐ์ฒด ์์ฒด ์ค์ ์ ๋ ๊ฒ ํํ๋๋ ๊ฒ์ด ์๊ธฐ๋ ํ๋ ๊ฒ ๊ฐ์๋ฐ, ์ฌ์ค ์์ธํ ๊ธฐ์ต์ด ๋์ง ์๋๋ค.
์๋ ์๋ ์ง์์ ์ฌ์ฉํ๋ฉด์ ์๋ก์ด ๊ฒ์ ๋ฐฐ์ฐ๊ฒ ๋ ํํธ์๋ค.