์ด ๊ณ์ฐ๊ธฐ๋ก ํ ์ ์๋ ์ผ
๋ ์ง์ ์ฐ๋ ๋ํ๊ธฐ ๊ณ์ฐ๊ธฐ๋ ์์ ๋ ์ง์ ์ฐ์๋ฅผ ์ ๋ ฅํ๋ฉด ๊ทธ๋งํผ ์ง๋ ์ ํํ ๋ ์ง๋ฅผ ์๋ ค์ค๋๋ค. ์์๋ฅผ ์ ๋ ฅํ๋ฉด ๊ณผ๊ฑฐ๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ ๋ ์ง๋ ๊ตฌํ ์ ์์ต๋๋ค. ๊ธฐ๋ ์ผ, ๊ณ์ฝ ๊ธฐ๊ฐ, ๋ณด์ฆ ๋ง๋ฃ์ผ, ๋์ด ๊ด๋ จ ์์ , ๋ง๊ธฐ์ผ์ฒ๋ผ '๋ช ๋ ๋ค(๋๋ ์) ๋ ์ง'๊ฐ ํ์ํ ๋ชจ๋ ์ผ์ ๊ณํ์ ์ ์ฉํฉ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
๋ ์ง ์ ํ๊ธฐ์์ ์์ ๋ ์ง๋ฅผ ๊ณ ๋ฅด๊ณ , ๋ํ๊ณ ์ถ์ ์ฐ์(์: 5)๋ฅผ ์ ๋ ฅํ๋ฉด ๊ฒฐ๊ณผ ๋ ์ง๊ฐ ๋ฐ๋ก ํ์๋ฉ๋๋ค. ์ฐ๋๋ฅผ ๋นผ๊ณ ์ถ๋ค๋ฉด -3์ฒ๋ผ ์์๋ฅผ ์ ๋ ฅํ๋ฉด ๋ฉ๋๋ค. ๊ฒฐ๊ณผ์๋ ์ ์ฒด ๋ ์ง, ISO ํ์(YYYY-MM-DD), ๊ทธ๋ฆฌ๊ณ ์์ผ์ด ํจ๊ป ๋ํ๋ฉ๋๋ค.
๊ณ์ฐ ์๋ฆฌ
์ฐ๋๋ฅผ ๋ํ๋ ์๋ฆฌ๋ ๊ฐ๋จํฉ๋๋ค. ์๊ณผ ์ผ์ ๊ทธ๋๋ก ๋๊ณ ์ฐ๋์ \(N\)์ ๋ํ๋ฉด ๋ฉ๋๋ค.
$$\text{resultDate} = \text{date}(\,\text{year}+N,\ \text{month},\ \text{day}\,)$$
๋จ ํ ๊ฐ์ง ์์ธ๊ฐ ๋ฐ๋ก 2์ 29์ผ์ ๋๋ค. ์ค๋ (4๋ก ๋๋์ด๋จ์ด์ง๋ ํด, ๋ค๋ง 100์ผ๋ก ๋๋์ด๋จ์ด์ง๋ฉด์ 400์ผ๋ก๋ ๋๋์ด๋จ์ด์ง์ง ์๋ ํด๋ ์ ์ธ)์๋ง ์กด์ฌํ๋ ๋ ์ง์ด๊ธฐ ๋๋ฌธ์, ์์ ๋ ์ง๊ฐ 2์ 29์ผ์ด๊ณ ๋ชฉํ ์ฐ๋๊ฐ ์ค๋ ์ด ์๋๋ผ๋ฉด ๊ณ์ฐ๊ธฐ๊ฐ ์๋์ผ๋ก 2์ 28์ผ๋ก ์กฐ์ ํด ํญ์ ์ ํจํ ๋ ์ง๋ฅผ ๋ณด์ฌ ์ค๋๋ค.
$$\text{Feb }29 \rightarrow \text{Feb }28 \ \text{(if target year is not a leap year)}$$
์ค์ ์์
2020๋ 2์ 29์ผ์์ 1๋ ์ ๋ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ชฉํ ์ฐ๋์ธ 2021๋ ์ ์ค๋ ์ด ์๋๋ฏ๋ก 2์ 29์ผ์ด ์กด์ฌํ์ง ์์ต๋๋ค.
$$\text{date}(2020+1,\ 2,\ 29) = \text{date}(2021,\ 2,\ 29) \rightarrow 2021\text{-}02\text{-}28$$
๊ทธ๋์ ๊ณ์ฐ๊ธฐ๋ ๋ ์ง๋ฅผ 2์ 28์ผ๋ก ๋ณด์ ํ์ฌ 2021๋ 2์ 28์ผ์ ๊ฒฐ๊ณผ๋ก ๋ณด์ฌ ์ค๋๋ค. ๋ฐ๋ฉด 4๋ ์ ๋ํ๋ฉด ์ค๋ ์ธ 2024๋ ์ ๋๋ฌํ๋ฏ๋ก ๊ฒฐ๊ณผ๋ ๊ทธ๋๋ก 2024๋ 2์ 29์ผ์ด ๋ฉ๋๋ค.
$$\text{date}(2020+4,\ 2,\ 29) = \text{date}(2024,\ 2,\ 29)$$
์๋๋ฆฌ์ค ๋น๊ต
์๋ ํ๋ ๋ ์ง์ ์ฐ๋ ์ถ๊ฐ ๊ณ์ฐ๊ธฐ๊ฐ ์ผ๋ฐ์ ์ธ ์ํฉ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋ณด์ฌ์ค๋๋ค. 2์ 29์ผ์ด ํ๋ (์ค๋ ์ด ์๋ ํด)์์ 2์ 28์ผ์ด ๋๋ ์ค์ผ ๊ท์น์ ํฌํจํฉ๋๋ค. ๊ฐ ๊ฒฐ๊ณผ๋ ์ฐ๋๋ฅผ ๋ํ๊ฑฐ๋(์์ ์ฐ๋) ๋นผ๊ฑฐ๋(์์ ์ฐ๋) ํ ํ ๋์ฐฉํ ๋ ์ง์ด๋ฉฐ, ๊ฒฐ๊ณผ ๋ ์ง์ ์์ผ๋ ํจ๊ป ๋ํ๋ ๋๋ค.
| ์์ ๋ ์ง | ์ฐ๋ | ๊ฒฐ๊ณผ ๋ ์ง | ์์ผ | ๋น๊ณ |
|---|---|---|---|---|
| 2020๋ 1์ 1์ผ | +5 | 2025๋ 1์ 1์ผ | ์์์ผ | ๋จ์ํ ์ฐ๋ ์ถ๊ฐ |
| 2020๋ 2์ 29์ผ | +1 | 2021๋ 2์ 28์ผ | ์ผ์์ผ | 2021๋ ์ ์ค๋ ์ด ์๋๋ฏ๋ก 2์ 29์ผ์ 2์ 28์ผ๋ก ์กฐ์ ๋ฉ๋๋ค |
| 2020๋ 2์ 29์ผ | +4 | 2024๋ 2์ 29์ผ | ๋ชฉ์์ผ | 2024๋ ์ ์ค๋ ์ด๋ฏ๋ก 2์ 29์ผ์ด ์ ์ง๋ฉ๋๋ค |
| 2023๋ 12์ 31์ผ | -10 | 2013๋ 12์ 31์ผ | ํ์์ผ | ์ฐ๋๋ฅผ ๋นผ๋ฉด ๊ณผ๊ฑฐ๋ก ์ด๋ํฉ๋๋ค |
| 2000๋ 6์ 15์ผ | +25 | 2025๋ 6์ 15์ผ | ์ผ์์ผ | ์ฅ๊ธฐ๊ฐ ์ถ๊ฐ๋ ๊ฐ์ ์๊ณผ ์ผ์ ์ ์งํฉ๋๋ค |
์๊ณผ ์ผ์ ๋ณดํต ๋์ผํ๊ฒ ์ ์ง๋๋ฉฐ ์ฐ๋๋ง ๋ณ๊ฒฝ๋ฉ๋๋ค. ์ ์ผํ ์์ธ๋ 2์ 29์ผ ์์ ๋ ์ง๊ฐ ํ๋ ์ ํด๋นํ ๋์ด๋ฉฐ, ์ด ๊ฒฝ์ฐ 2์ 28์ผ๋ก ์กฐ์ ๋์ด ๊ฒฐ๊ณผ๊ฐ ์ ํจํ ๋ฌ๋ ฅ ๋ ์ง๊ฐ ๋ฉ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
์ฐ๋๋ฅผ ๋บ ์๋ ์๋์? ๋ค. -10์ฒ๋ผ ์์๋ฅผ ์ ๋ ฅํ๋ฉด 10๋ ์ ๋ ์ง๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค.
์ 2์ 29์ผ์ด 2์ 28์ผ๋ก ๋ฐ๋์๋์? ๋ชฉํ ์ฐ๋๊ฐ ์ค๋ ์ด ์๋์ด์ ๊ทธํด์๋ 2์ 29์ผ์ด ์กด์ฌํ์ง ์๊ธฐ ๋๋ฌธ์ 28์ผ๋ก ์กฐ์ ๋ฉ๋๋ค.
์ค๋ ์ด ์ ๋ฐ์ ์ผ๋ก ๋ฐ์๋๋์? ๋ค. ์ด ๊ณ์ฐ์์๋ ์ผ(ๆฅ)๋ง ์ค์ํ๋ฉฐ(์๊ณผ ์ผ์ ๊ทธ๋๋ก ์ ์ง๋จ), ์ฐ๋๊ฐ ๋ฐ๋ ๋ ์กฐ์ ์ด ํ์ํ ๋ ์ง๋ ์ค์ง 2์ 29์ผ๋ฟ์ ๋๋ค.