์ํฌํฌ ๋ฐ๋ฆฌ์ด ํ์์คํฌํ๋?
์ ๋์ค ์ํฌํฌ ํ์์คํฌํ๋ ์ด๋ฅธ๋ฐ '์ํฌํฌ(epoch)'๋ผ๊ณ ๋ถ๋ฅด๋ ๊ธฐ์ค ์์ 1970-01-01 00:00:00 UTC ์ดํ ํ๋ฅธ ์๊ฐ์ ์ซ์๋ก ๋ํ๋ธ ๊ฐ์
๋๋ค. ๋ง์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ API(์๋ฐ์คํฌ๋ฆฝํธ์ Date.now(), ์๋ฐ์ System.currentTimeMillis(), ๊ทธ๋ฆฌ๊ณ ์๋ง์ JSON ์๋ต)์์๋ ์ด ๊ฐ์ ์ด๊ฐ ์๋ ๋ฐ๋ฆฌ์ด(ms) ๋จ์๋ก ํํํฉ๋๋ค. ์ด ๋ณํ๊ธฐ๋ ๊ทธ ๋ฌด๋ฏธ๊ฑด์กฐํ ์ซ์๋ฅผ ์ฌ๋์ด ๋ฐ๋ก ์ฝ์ ์ ์๋ UTC ๋ ์ง์ ์๊ฐ์ผ๋ก ๋ฐ๊ฟ ์ค๋๋ค.
๋ณํ๊ธฐ ์ฌ์ฉ ๋ฐฉ๋ฒ
๋ฐ๋ฆฌ์ด ๋จ์ ํ์์คํฌํ๋ฅผ ์
๋ ฅ๋์ ๋ถ์ฌ๋ฃ๊ฑฐ๋ ์ง์ ์
๋ ฅํ ๋ค ์คํํ์ธ์. ๋ณํ๊ธฐ๋ ์
๋ ฅ๊ฐ์ 1000์ผ๋ก ๋๋ ์ ์ ์ด๋ฅผ ๊ตฌํ ๋ค์, ์ํฌํฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ ์ด๋ฅผ ๋ฌ๋ ฅ ์์ ๋งคํํฉ๋๋ค. ๊ฒฐ๊ณผ๋ก๋ ์์ ํ ISO 8601 ๋ฌธ์์ด(์: 2023-11-14T22:13:20Z)๊ณผ ํจ๊ป ์ฐยท์ยท์ผยท์ยท๋ถยท์ด๋ก ๋ถํดํ ๊ฐ์ด ํ์๋ฉ๋๋ค. ๋ชจ๋ ๊ฐ์ UTC ๊ธฐ์ค์ด๋ฏ๋ก ์ฌ์ฉ์๊ฐ ์๋ ์ง์ญ์ ํ์ค์(๋ก์ปฌ ํ์์กด)์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
๋ณํ ๊ณต์ ํ์ด
๋ณํ์ ๋ ๋จ๊ณ๋ก ๊ฐ๋จํ ์ด๋ค์ง๋๋ค.
$$\text{Date}_{\text{UTC}} = \text{Epoch}_{1970}\;+\;\frac{\text{Epoch Time (ms)}}{1000}\ \text{seconds}$$๋จผ์ ์ด = floor(ms / 1000)๋ก 1์ด ๋ฏธ๋ง์ ๋๋จธ์ง๋ฅผ ๋ฒ๋ฆฝ๋๋ค. ๊ทธ๋ค์ ๋ ์ง = ์ํฌํฌ + ์ด๋ก 1970๋
1์ 1์ผ ์์ ์ ๊ทธ ์ด๋ฅผ ๋ํฉ๋๋ค. ์ค๋
, ๋ฌ๋ง๋ค ๋ค๋ฅธ ์ผ์ ๊ฐ์ ๋ณต์กํ ๋ถ๋ถ์ ๋ฌ๋ ฅ ๊ณ์ฐ์ด ์์์ ์ฒ๋ฆฌํฉ๋๋ค.
์ค์ ๊ณ์ฐ ์์
1,700,000,000,000 ms๋ฅผ ์๋ก ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. 1000์ผ๋ก ๋๋๋ฉด 1,700,000,000์ด๊ฐ ๋ฉ๋๋ค. ์ด๋ฅผ ์ํฌํฌ์ ๋ํ๋ฉด 2023-11-14T22:13:20Z, ์ฆ 2023๋ 11์ 14์ผ 22์ 13๋ถ 20์ด(UTC)๊ฐ ๋์ต๋๋ค.
$$\frac{1{,}700{,}000{,}000{,}000\ \text{ms}}{1000} = 1{,}700{,}000{,}000\ \text{seconds}$$$$\text{Epoch}_{1970} + 1{,}700{,}000{,}000\ \text{seconds} = \text{2023-11-14T22:13:20Z}$$์์ฃผ ๋ฌป๋ ์ง๋ฌธ(FAQ)
๊ฒฐ๊ณผ๊ฐ ์ ์ง์ญ ์๊ฐ(๋ก์ปฌ ์๊ฐ)์ธ๊ฐ์? ์๋๋๋ค. ํผ๋์ ๋ง๊ธฐ ์ํด ๊ฒฐ๊ณผ๋ ํญ์ UTC(ํ์ ์ธ๊ณ์)๋ก ํ์๋ฉ๋๋ค. ํ์ง ์๊ฐ์ด ํ์ํ๋ค๋ฉด ๊ฑฐ๊ธฐ์ ๋ณธ์ธ ์ง์ญ์ ์์ฐจ๋ฅผ ์ง์ ์ ์ฉํ์ธ์. ์๋ฅผ ๋ค์ด ํ๊ตญ ํ์ค์(KST)๋ UTC๋ณด๋ค 9์๊ฐ ๋น ๋ฆ ๋๋ค.
๋ฐ๋ฆฌ์ด๊ฐ ์๋๋ผ ์ด ๋จ์ ๊ฐ๋ง ์๋ค๋ฉด์? ์ ๋ ฅํ๊ธฐ ์ ์ ์ด ๋จ์ ํ์์คํฌํ์ 1000์ ๊ณฑํ๊ฑฐ๋, ๊ฐ๋จํ ๋ค์ 0์ ์ธ ๊ฐ ๋ถ์ด๋ฉด ๋ฉ๋๋ค.
์ ํ์์คํฌํ๊ฐ ๋จผ ๋ฏธ๋๋ 1970๋ ์ฒ๋ผ ๋ณด์ผ ๋๊ฐ ์๋์? ์ด ๋จ์ ๊ฐ์ ๋ฐ๋ฆฌ์ด๋ก ์๋ชป ์ ๋ ฅํ๋ฉด ๊ฒฐ๊ณผ๊ฐ 1970๋ ๊ทผ์ฒ๋ก ๋์ค๊ณ , ์ด๋ฏธ ๋ฐ๋ฆฌ์ด์ธ ๊ฐ์ 0์ ๋ ๋ถ์ฌ ์ ๋ ฅํ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋จผ ๋ฏธ๋๋ก ํ๋๋ค. ์ ๋ ฅ ๋จ์๊ฐ ๋ฐ๋ฆฌ์ด๊ฐ ๋ง๋์ง ํญ์ ํ์ธํ์ธ์.