์ ๋์ค ํ์์คํฌํ๋?
์ ๋์ค ํ์์คํฌํ(์ํฌํฌ ์๊ฐ ๋๋ POSIX ์๊ฐ์ด๋ผ๊ณ ๋ ํฉ๋๋ค)๋ 1970๋ 1์ 1์ผ 00:00:00 UTC, ์ฆ '์ ๋์ค ์ํฌํฌ(Unix epoch)'๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ฌ๊ฐ ์ด(็ง)์ ์์ ๋๋ค. ์ค์ด๋ ๊ณ์ฐ์ ํฌํจํ์ง ์์ต๋๋ค. ์ปดํจํฐ๊ฐ ํน์ ์์ ์ ์๊ฐ๋(ํ์์กด)์ ๋ฌด๊ดํ๊ฒ ํ๋์ ์ซ์๋ก ์ ์ฅํ๋ ๋ณดํธ์ ์ธ ๋ฐฉ์์ด์ฃ . ์ด ๊ณ์ฐ๊ธฐ๋ ๋ฐ๋ฆฌ์ด ๋จ์ ๊ฐ์ ํ์ค ์ ๋์ค ํ์์คํฌํ(์ด ๋จ์)๋ก ๋ณํํด ์ฃผ๋ฉฐ, ์ํฌํฌ ์ดํ ๊ฒฝ๊ณผํ ๋ถยท์๊ฐยท์ผ์๋ ํจ๊ป ๋ณด์ฌ์ค๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
์๊ฐ ๊ฐ์ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ์ ๋ ฅํ์ธ์. ํ์ฌ ์ ๋์ค ํ์์คํฌํ('epoch now')๋ฅผ ๊ตฌํ๋ ค๋ฉด ํ์ฌ ์๊ฐ์ ๋ฐ๋ฆฌ์ด๋ก ๋ฃ์ผ๋ฉด ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์์๋ก ์ฑ์์ ธ ์์ต๋๋ค. ๊ณ์ฐ๊ธฐ๋ ์ ๋ ฅ๊ฐ์ 1,000์ผ๋ก ๋๋ ๋ค ์์์ ์ดํ๋ฅผ ๋ฒ๋ ค(๋ด๋ฆผ) ์ ์ ์ด๋ฅผ ๋ง๋ค์ด ์ค๋๋ค. ์ด ํ์์ ๊ฑฐ์ ๋ชจ๋ API, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์๊ตฌํ๋ ํ์ค ํ์์ ๋๋ค.
๊ณต์ ์ค๋ช
ํต์ฌ ๋ณํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$$\text{Epoch} = \left\lfloor \dfrac{\text{Time (ms)}}{1000} \right\rfloor$$๋ฐ๋ฆฌ์ด๋ 1,000๋ถ์ 1์ด๊น์ง ํํํ์ง๋ง ์ ํต์ ์ธ ์ ๋์ค ํ์์คํฌํ๋ ์ ์ ์ด ๋จ์์ด๋ฏ๋ก, ์์ ๋ถ๋ถ์ ๋ฒ๋ฆฌ๋ ๋ด๋ฆผ(floor) ์ฐ์ฐ์ ์ ์ฉํฉ๋๋ค. ์ฌ๊ธฐ์ ์ํฌํฌ ๊ฐ์ ๊ฐ๊ฐ 60, 3,600, 86,400์ผ๋ก ๋๋๋ฉด ๋ถ, ์๊ฐ, ์ผ์๊ฐ ๋ฉ๋๋ค.
$$\begin{gathered} \text{Epoch} = \left\lfloor \dfrac{\text{Time (ms)}}{1000} \right\rfloor \\[1.5em] \text{where}\quad \left\{ \begin{aligned} \text{Minutes} &= \left\lfloor \tfrac{\text{Epoch}}{60} \right\rfloor \\ \text{Hours} &= \left\lfloor \tfrac{\text{Epoch}}{3600} \right\rfloor \\ \text{Days} &= \left\lfloor \tfrac{\text{Epoch}}{86400} \right\rfloor \end{aligned} \right. \end{gathered}$$
๊ณ์ฐ ์์
ํ์ฌ ์๊ฐ์ด 1,700,000,000,000๋ฐ๋ฆฌ์ด๋ผ๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ์ด ๊ฐ์ 1,000์ผ๋ก ๋๋๋ฉด 1,700,000,000์ด๊ฐ ๋๋ฉฐ, ์ด๊ฒ์ด ๋ฐ๋ก ์ ๋์ค ํ์์คํฌํ์ ๋๋ค.
$$\left\lfloor \frac{1{,}700{,}000{,}000{,}000}{1000} \right\rfloor = 1{,}700{,}000{,}000 \text{ s}$$๋ค์ 1,700,000,000์ 86,400์ผ๋ก ๋๋ ๋ค ๋ด๋ฆผํ๋ฉด 1970๋ 1์ 1์ผ ์ดํ 19,675์ผ์ด ์ง๋ ๊ฒ์ด ๋๋๋ฐ, ์ด๋ 2023๋ 11์ ์ค์์ ํด๋นํฉ๋๋ค.
$$\left\lfloor \frac{1{,}700{,}000{,}000}{86{,}400} \right\rfloor = 19{,}675 \text{ days}$$์์ฃผ ๋ฌป๋ ์ง๋ฌธ
์ ๋ฐ๋ฆฌ์ด๊ฐ ์๋๋ผ ์ด๋ฅผ ์ฐ๋์? ์๋ ์ ๋์ค ํ์ค์ด ์ด ๋จ์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋๋ค. JavaScript์ Date.now()๋ ๋ฐ๋ฆฌ์ด๋ฅผ ๋ฐํํ๋ฏ๋ก, ๋ณดํต 1,000์ผ๋ก ๋๋ ์ ์ด๋ก ๋ฐ๊ฟ๋๋ค.
์๊ฐ๋(ํ์์กด)๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋๋์? ์ฒ๋ฆฌํ ํ์๊ฐ ์์ต๋๋ค. ์ ๋์ค ์๊ฐ์ ํญ์ UTC ๊ธฐ์ค์ ๋๋ค. ๊ฐ์ ์๊ฐ์ด๋ผ๋ฉด ์ง๊ตฌ์ ์ด๋์๋ ๋์ผํ ํ์์คํฌํ๋ฅผ ๊ฐ์ต๋๋ค.
'2038๋ ๋ฌธ์ '๋ ๋ฌด์์ธ๊ฐ์? ํ์์คํฌํ๋ฅผ ๋ถํธ ์๋ 32๋นํธ ์ ์๋ก ์ ์ฅํ๋ ์์คํ ์ 2038๋ 1์ 19์ผ์ ์ค๋ฒํ๋ก๊ฐ ๋ฐ์ํฉ๋๋ค. ์ต์ 64๋นํธ ์์คํ ์์๋ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.