์ด ๊ณ์ฐ๊ธฐ๋ก ํ ์ ์๋ ์ผ
๊ธฐ์ค ์๊ฐ์์ ์ํ๋ ์๊ฐ๋งํผ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ์ ๋ ์๊ณ๊ฐ ์ ํํ ๋ช ์๋ฅผ ๊ฐ๋ฆฌ์ผฐ๋์ง ์๋ ค์ฃผ๋ ๋๊ตฌ์ ๋๋ค. ํ์ฌ ์์ ๋ถ์ ์ ๋ ฅํ๊ณ ๋ช ์๊ฐ ์ ์ธ์ง ์ซ์๋ฅผ ๋ฃ์ผ๋ฉด, ๊ณผ๊ฑฐ ์๊ฐ์ 24์๊ฐ์ ์ 12์๊ฐ์ (์ค์ /์คํ) ๋ ๊ฐ์ง ํ์์ผ๋ก ๋ณด์ฌ์ค๋๋ค. ๋ํ ์์ ์ ๋์ด๊ฐ๋ฉด ๋ฉฐ์น ์ ์ผ๋ก ๋์ด๊ฐ๋์ง๋ ํจ๊ป ํ์ํฉ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
1. ํ์ฌ ์(0~23)์ ๋ถ(0~59)์ ์ ๋ ฅํฉ๋๋ค. 2. ๋ช ์๊ฐ ์ ์ธ์ง ์ ๋ ฅํฉ๋๋ค. 1.5๋ 2.25 ๊ฐ์ ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค(15๋ถ = 0.25). 3. ๊ฒฐ๊ณผ๋ฅผ ํ์ธํฉ๋๋ค. ์๋จ์๋ HH:MM ํ์์ผ๋ก ์๊ฐ์ด ๋์ค๊ณ , ์ธ๋ถ ํญ๋ชฉ์๋ 24์๊ฐ์ ๊ธฐ์ค ์ยท๋ถ๊ณผ ๋ฉฐ์น ์ ์ธ์ง๊ฐ ํ์๋ฉ๋๋ค.
๊ณ์ฐ ๊ณต์ ํ์ด
ํ์ฌ ์๊ฐ์ ๋จผ์ ์์ ๊ธฐ์ค ์ด ๋จ์๋ก ํ์ฐ๋ฉ๋๋ค. \(\text{nowSeconds} = \text{์} \times 3600 + \text{๋ถ} \times 60\).
$$\text{nowSeconds} = \text{์} \times 3600 + \text{๋ถ} \times 60$$์ฌ๊ธฐ์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ ์๊ฐ(\(\text{hoursAgo} \times 3600\))์ ๋บ ๋ค, ํ๋ฃจ์ ์ด ์์ธ 86400์ผ๋ก ๋๋ ๋๋จธ์ง(modulo)๋ฅผ ๊ตฌํฉ๋๋ค. ๋จ์ ๋บ์ ์ ์์๊ฐ ๋ ์ ์์ผ๋ฏ๋ก 86400์ ๋ํ ๋ค์ ๋ค์ ๋๋จธ์ง๋ฅผ ๊ตฌํด, ๊ฒฐ๊ณผ๊ฐ ํญ์ 00:00์์ 23:59 ์ฌ์ด์ ์ฌ๋ฐ๋ฅธ ์๊ฐ์ด ๋๋๋ก ํฉ๋๋ค.
$$\text{Past Time} = \left[\left(\text{Hour} \times 3600 + \text{Minute} \times 60\right) - \text{Hours Ago} \times 3600 \right] \bmod 86400$$๋ํ ์๋ ์ฐจ์ด๊ฐ์ 86400์ผ๋ก ๋๋ ๋ค ๋ด๋ฆผ(floor)ํ๋ฉด ๋ฉฐ์น ์ ์ผ๋ก ๋์ด๊ฐ๋์ง ์ ์ ์์ต๋๋ค.
์ค์ ์์
์ง๊ธ์ด 2์(02:00)์ธ๋ฐ 5์๊ฐ ์ ์ด ๋ช ์์๋์ง ์๊ณ ์ถ๋ค๊ณ ํด๋ด ์๋ค. \(\text{nowSeconds} = 2 \times 3600 = 7200\), \(\text{agoSeconds} = 5 \times 3600 = 18000\)์ ๋๋ค. ๋จ์ ๊ณ์ฐํ๋ฉด \(7200 - 18000 = -10800\)์ด ๋ฉ๋๋ค. ์ด๋ฅผ ๋ณด์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$$(-10800 \bmod 86400 + 86400) \bmod 86400 = 75600 \text{ ์ด}$$์ฆ 21:00(์คํ 9์)์ด๋ฉฐ ํ๋ฃจ ์ ์ ํด๋นํฉ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
24์๊ฐ๋ณด๋ค ๋ ๋ง์ด ๋บ ์ ์๋์? ๊ฐ๋ฅํฉ๋๋ค. '๋ฉฐ์น ์ ' ํญ๋ชฉ์ ๊ฒฐ๊ณผ๊ฐ ๋ฉฐ์น ์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋์ง ํ์๋ฉ๋๋ค.
์ ์ค์ ํ์ฌ ์๊ฐ์ ์ฌ์ฉํ๋์? ์๋๋๋ค. ๊ธฐ์ค ์๊ฐ์ ์ง์ ์ ๋ ฅํ๋ฏ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ธ์ ๋ ๋๊ฐ์ด ์ฌํํ ์ ์๊ณ , ์๊ฐ๋(ํ์์กด)์ ์ํฅ๋ ๋ฐ์ง ์์ต๋๋ค.
1์๊ฐ ๋ฏธ๋ง์ ๋จ์๋ ์ธ ์ ์๋์? ๋ค, ์์๋ก ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค. 30๋ถ์ 0.5, 15๋ถ์ 0.25๋ก ๋ฃ์ผ์ธ์.