JavaScript์์ Date ๊ฐ์ฒด๋ ๋ ์ง์ ์๊ฐ์ ๋ค๋ฃจ๊ธฐ ์ํ ๊ธฐ๋ณธ์ ์ธ ๋๊ตฌ์ ๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ฌ ์๊ฐ์ ๊ฐ์ ธ์ค๊ฑฐ๋ ํน์ ๋ ์ง๋ฅผ ์ค์ ํ๊ณ , ๋ค์ํ ํ์์ผ๋ก ๋ ์ง๋ฅผ ์ถ๋ ฅํ๋ ๋ฑ ๋ค์ํ ์์ ์ ์ํํ ์ ์์ต๋๋ค. ์ด ๊ธ์์๋ JavaScript์ Date ๊ฐ์ฒด์ ๋ํด ์์ธํ ์ค๋ช ํ๊ณ , ์ค๋ฌด์์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ๋ค์ ์๊ฐํ๊ฒ ์ต๋๋ค.
Date ๊ฐ์ฒด ์์ฑํ๊ธฐ
JavaScript์์ Date ๊ฐ์ฒด๋ new Date()
๋ก ์์ฑํ ์ ์์ต๋๋ค. ๋ค์ํ ๋ฐฉ์์ผ๋ก ๋ ์ง์ ์๊ฐ์ ์ค์ ํ ์ ์์ผ๋ฉฐ, ์์ฑ๋ Date ๊ฐ์ฒด๋ ๋ ์ง์ ์๊ฐ ์ ๋ณด๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.
1. ํ์ฌ ๋ ์ง์ ์๊ฐ ๊ฐ์ ธ์ค๊ธฐ
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก new Date()
๋ฅผ ํธ์ถํ๋ฉด, ํ์ฌ ์์คํ
์ ๋ ์ง์ ์๊ฐ์ ๊ฐ์ ธ์ต๋๋ค.
const now = new Date();
console.log(now);
// ์์ ๊ฒฐ๊ณผ: 2023-09-12T12:34:56.789Z
์ ์์ ๋ ํ์ฌ ๋ ์ง์ ์๊ฐ์ ํฌํจํ Date
๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. ์ถ๋ ฅ๋๋ ์๊ฐ์ ๊ตญ์ ํ์ค์(UTC) ๊ธฐ์ค์ผ๋ก ํ์๋ฉ๋๋ค.
2. ํน์ ๋ ์ง์ ์๊ฐ ์ค์ ํ๊ธฐ
Date ๊ฐ์ฒด๋ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ํน์ ๋ ์ง์ ์๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค. ๋ , ์, ์ผ, ์, ๋ถ, ์ด๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
const date1 = new Date('2024-09-12');
console.log(date1); // ๊ฒฐ๊ณผ: Thu Sep 12 2024
const date2 = new Date(2024, 8, 12); // ์์ 0๋ถํฐ ์์ํ๋ฏ๋ก 8์ 9์์ ์๋ฏธ
console.log(date2); // ๊ฒฐ๊ณผ: Thu Sep 12 2024
์ ์์ ์์๋ ๋ฌธ์์ด๋ก ๋ ์ง๋ฅผ ์ง์ ํ๊ฑฐ๋, ๋ , ์, ์ผ์ ์ซ์๋ก ์ง์ ํ์ฌ Date ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ ์์ 0๋ถํฐ ์์ํ๋ฏ๋ก, 9์์ ๋ํ๋ด๋ ค๋ฉด 8์ ์ ๋ ฅํด์ผ ํฉ๋๋ค.
์๊ฐ ๊ด๋ จ ๋ฉ์๋
Date ๊ฐ์ฒด๋ ๋ ์ง์ ์๊ฐ์ ๋ค๋ฃฐ ์ ์๋ ๋ค์ํ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ ์ง์ ํน์ ์์๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋, ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
1. ์๊ฐ ๊ฐ์ ธ์ค๊ธฐ
๋ค์ ๋ฉ์๋๋ค์ ์ฌ์ฉํ๋ฉด Date ๊ฐ์ฒด์์ ์๊ฐ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค:
const now = new Date();
console.log(now.getFullYear()); // ์ฐ๋ ๊ฐ์ ธ์ค๊ธฐ
console.log(now.getMonth()); // ์ ๊ฐ์ ธ์ค๊ธฐ (0๋ถํฐ ์์)
console.log(now.getDate()); // ์ผ ๊ฐ์ ธ์ค๊ธฐ
console.log(now.getHours()); // ์ ๊ฐ์ ธ์ค๊ธฐ
console.log(now.getMinutes()); // ๋ถ ๊ฐ์ ธ์ค๊ธฐ
console.log(now.getSeconds()); // ์ด ๊ฐ์ ธ์ค๊ธฐ
์ ๋ฉ์๋๋ค์ ์ฌ์ฉํ๋ฉด ๋ ์ง์ ์๊ฐ์ ๊ฐ ์์๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. getMonth()
๋ 0๋ถํฐ ์์ํ๋ฏ๋ก, 9์์ ์๋ฏธํ๋ ๊ฐ์ 8
์
๋๋ค.
2. ์๊ฐ ์ค์ ํ๊ธฐ
๋ ์ง์ ์๊ฐ์ ์ค์ ํ๋ ๋ฉ์๋๋ ์์ต๋๋ค. ์ด ๋ฉ์๋๋ค์ ์ฌ์ฉํ๋ฉด Date ๊ฐ์ฒด์ ์๊ฐ์ ์์ ํ ์ ์์ต๋๋ค.
const now = new Date();
now.setFullYear(2025); // ์ฐ๋๋ฅผ 2025๋
์ผ๋ก ๋ณ๊ฒฝ
now.setMonth(5); // ์์ 6์๋ก ๋ณ๊ฒฝ (0๋ถํฐ ์์)
now.setDate(15); // ์ผ์ 15์ผ๋ก ๋ณ๊ฒฝ
console.log(now); // ๊ฒฐ๊ณผ: Sun Jun 15 2025
์ ์์ ์์๋ setFullYear()
, setMonth()
, setDate()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด Date ๊ฐ์ฒด์ ๋ ์ง ์ ๋ณด๋ฅผ ์์ ํ์ต๋๋ค.
๋ ์ง ๊ฐ๊ฒฉ ๊ณ์ฐํ๊ธฐ
JavaScript์ Date ๊ฐ์ฒด๋ ๋ ๋ ์ง ๊ฐ์ ์ฐจ์ด๋ฅผ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ๊ณ์ฐํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํ์ฉํด ํน์ ๊ธฐ๊ฐ์ด ์ผ๋ง๋ ์ง๋ฌ๋์ง ๋๋ ์์ผ๋ก ์ผ๋ง๋ ๋จ์๋์ง ๊ณ์ฐํ ์ ์์ต๋๋ค.
const startDate = new Date('2024-01-01');
const endDate = new Date('2024-12-31');
const diffTime = endDate - startDate; // ๋ฐ๋ฆฌ์ด ๋จ์ ์ฐจ์ด
const diffDays = diffTime / (1000 * 60 * 60 * 24); // ์ผ ๋จ์๋ก ๋ณํ
console.log(diffDays); // ๊ฒฐ๊ณผ: 365
์ ์์ ์์๋ ๋ ๋ ์ง ๊ฐ์ ์ฐจ์ด๋ฅผ ๊ณ์ฐํ์ฌ ์ผ ์๋ก ๋ณํํ์ต๋๋ค. ๋ฐ๋ฆฌ์ด๋ฅผ ์ด, ๋ถ, ์๊ฐ, ์ผ ๋จ์๋ก ๋ณํํ์ฌ ์ฝ๊ฒ ๋ ์ง ๊ฐ์ ์ฐจ์ด๋ฅผ ๊ณ์ฐํ ์ ์์ต๋๋ค.
๋ ์ง ํ์ ์ง์ ํ๊ธฐ
Date ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ํ ํ์์ผ๋ก ๋ ์ง๋ฅผ ์ถ๋ ฅํ ์ ์์ต๋๋ค. ํนํ toLocaleDateString()
์ toLocaleTimeString()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด, ๋ก์ผ์ผ์ ๋ง๋ ํ์์ผ๋ก ๋ ์ง์ ์๊ฐ์ ์ถ๋ ฅํ ์ ์์ต๋๋ค.
const now = new Date();
// ๋ก์ผ์ผ์ ๋ง๋ ๋ ์ง ์ถ๋ ฅ
console.log(now.toLocaleDateString('en-US')); // ๊ฒฐ๊ณผ: 9/12/2024
console.log(now.toLocaleDateString('ko-KR')); // ๊ฒฐ๊ณผ: 2024. 9. 12.
// ๋ก์ผ์ผ์ ๋ง๋ ์๊ฐ ์ถ๋ ฅ
console.log(now.toLocaleTimeString('en-US')); // ๊ฒฐ๊ณผ: 12:34:56 PM
console.log(now.toLocaleTimeString('ko-KR')); // ๊ฒฐ๊ณผ: ์คํ 12:34:56
์ ์์ ์์๋ toLocaleDateString()
์ toLocaleTimeString()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๋ ์ง์ ์๊ฐ์ ๊ฐ ๋ก์ผ์ผ์ ๋ง๊ฒ ์ถ๋ ฅํ์ต๋๋ค. en-US
๋ ๋ฏธ๊ตญ ํ์, ko-KR
์ ํ๊ตญ ํ์์
๋๋ค.
UTC ์๊ฐ ์ฌ์ฉํ๊ธฐ
JavaScript์ Date ๊ฐ์ฒด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก์ปฌ ์๊ฐ๋๋ฅผ ์ฌ์ฉํ์ง๋ง, UTC(ํ์ ์ธ๊ณ์)๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ ์ง์ ์๊ฐ์ ๋ค๋ฃฐ ์๋ ์์ต๋๋ค. ์ด๋ฅผ ์ํด getUTCFullYear()
, getUTCHours()
๋ฑ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
const now = new Date();
console.log(now.getUTCFullYear()); // UTC ๊ธฐ์ค ์ฐ๋
console.log(now.getUTCHours()); // UTC ๊ธฐ์ค ์
์ ๋ฉ์๋๋ค์ UTC ๊ธฐ์ค์ผ๋ก ๋ ์ง์ ์๊ฐ์ ๊ฐ์ ธ์ต๋๋ค. UTC ์๊ฐ์ ์ ์ธ๊ณ์์ ๋์ผํ ์๊ฐ๋๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ์๊ฐ๋ ์ฐจ์ด๊ฐ ์๋ ์์คํ ๊ฐ ์๊ฐ ๋๊ธฐํ์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
ํ์์คํฌํ ๋ค๋ฃจ๊ธฐ
Date ๊ฐ์ฒด๋ 1970๋
1์ 1์ผ ์์ (UTC)์ ๊ธฐ์ค์ผ๋ก ๊ฒฝ๊ณผํ ์๊ฐ์ ํ์์คํฌํ(๋ฐ๋ฆฌ์ด)๋ก ๋ํ๋ผ ์ ์์ต๋๋ค. getTime()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ฌ ์๊ฐ์ ํ์์คํฌํ๋ก ๋ฐํ๋ฐ์ ์ ์์ต๋๋ค.
const now = new Date();
const timestamp = now.getTime();
console.log(timestamp); // ๊ฒฐ๊ณผ: 1694568896789 (์์ ๊ฐ)
ํ์์คํฌํ๋ ์ซ์ ๊ฐ์ผ๋ก ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์, ๋ ๋ ์ง ๊ฐ์ ์ฐ์ฐ์ ํ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ์๊ฐ ๋์ ์ง์ฐ ์์ ์ ํ๊ฑฐ๋ ๋ ์๊ฐ ๊ฐ๊ฒฉ์ ๊ณ์ฐํ ๋ ํ์ฉํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
JavaScript์ Date ๊ฐ์ฒด๋ ๋ ์ง์ ์๊ฐ์ ๋ค๋ฃจ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ํ์ฌ ์๊ฐ ๊ฐ์ ธ์ค๊ธฐ, ํน์ ๋ ์ง ์ค์ , ๋ ์ง ๊ฐ๊ฒฉ ๊ณ์ฐ, ๋ก์ปฌ ์๊ฐ ์ถ๋ ฅ ๋ฑ ๋ค์ํ ์์ ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ค๋ฌด์์ Date ๊ฐ์ฒด๋ฅผ ์ ์ ํ ํ์ฉํ๋ฉด ๋ ์ง ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ ์ ํํ๊ฒ ๊ด๋ฆฌํ๊ณ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ํ๋ก์ ํธ์์ ๋ ์ง์ ์๊ฐ์ ๋ค๋ฃฐ ๋ Date ๊ฐ์ฒด์ ๋ค์ํ ๋ฉ์๋๋ฅผ ํ์ฉํ์ฌ ๋ ๋์ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์ธ์!
๋๊ธ ์ฐ๊ธฐ