_์ด ๋ฌธ์ ๋ ๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์ ํฐ์ผ์์ ์ด๋๋์์ต๋๋ค._
ํ์ฌ DateTimeOffset์ ์๊ฐ๋ ๋ณํ ์ต์ ์ ์๊ณ TimeZoneInfo์ฉ Windows API๋ DateTimeOffset์ ์ง์ํ์ง ์์ต๋๋ค.
์ด๋ก ์ธํด ๋ ์ง ์๊ฐ ์คํ์ ์ ๋ ์ง ์๊ฐ์ผ๋ก ๋ณํํ๋ ์ฝ๋๋ฅผ ์์ฑํ ๋ค์ TimeZoneInfo๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ์ง ์๊ฐ์ผ๋ก ๋ณํํ ๋ค์ ๋ค์ DateTimeOffset์ผ๋ก ๋ณํํ์ฌ ์๋ํ ์์ ๊ณผ ์๊ฐ๋๊ฐ ์ ์ง๋๋๋ก ํด์ผ ํฉ๋๋ค.
ํ์๊ณผ ๊ด๋ จ API ํธ์ถ ๊ฐ์ ์ด๋ฌํ ์ผ๋ จ์ ๋ณํ์ ๊ฐ๋ฐ์๊ฐ ์๊ฐ๋์ ์ธ๋ถ ์ฌํญ์ ์์ ํ ์ ํตํ์ง ์์ ๊ฒฝ์ฐ ๋ฐ๊ฒฌํ๊ธฐ ์ฝ์ง ์์ ์ ์๋ ๋ณํ ์ค๋ฅ์ ๊ฐ๋ฅ์ฑ์ ๋ง๋ญ๋๋ค.
TimeZoneInfo ๋ฐ DateTimeOffset์ ํตํฉํ์ฌ ๊ฐ๋ฐ์๊ฐ datetimeoffset์ ์ ์๊ฐ๋๋ก ๋ณํํ๊ณ ๋ณํ ์ฒด์ธ์ ๋ค์ด๊ฐ ํ์๊ฐ ์๋๋ก ์์ฒญํ ์ ์๋๋ก ํ๋ ์๋ก์ด ๋ฉ์๋ ์ธํธ ๋๋ ์ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ฑ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ค๋ฅ๊ฐ ์ค์ด๋ค๊ณ ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๊ฐ DateTimeOffset์ ๋ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ํ DateTimeOffset ToLocal์ ์น์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ ์ฌ์ฉ์ ํ์ค ์๊ฐ๋๋ก ๋ณํํ๋ ์ต์ ์ ์ ๊ณตํ์ง ์๋ ์๋ฒ ๋ ์ง ์๊ฐ/์๊ฐ๋๋ฅผ ๊ฐ์ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ๋ธ๋ผ์ฐ์ ํด๋ผ์ด์ธํธ์ ๋ค๋ฅธ ์๊ฐ๋์ ์์ ์ ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ์์ ์ด ์ํ์ง ์์ ์๊ฐ๋์ ๋ ์ง๋ฅผ ํ์ธํด์ผ ํ ์๋ ์์ต๋๋ค.
์๊ฐ์ ๋ด์ด ์ ์ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๊ณ์ ์งํํ ์ ์๋๋ก ์ฌ์ ์ ๊ฒ์ ์ค์ํ ์์ ์ ๋๋ค. ์ ํ ํ์์ ๋ฌธ์ ๋ฅผ ๋ถ๋ฅํ๋ฉด ์ ๋ฐ์ดํธ๋ฅผ ์ ๊ณตํ๊ฒ ์ต๋๋ค.
๋ํ DateTimeOffset ToLocal์ ์น์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ํ ์ฌ์ฉ์ ํ์ค ์๊ฐ๋๋ก ๋ณํํ๋ ์ต์ ์ ์ ๊ณตํ์ง ์๋ ์๋ฒ ๋ ์ง ์๊ฐ/์๊ฐ๋๋ฅผ ๊ฐ์ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ๋ธ๋ผ์ฐ์ ํด๋ผ์ด์ธํธ์ ๋ค๋ฅธ ์๊ฐ๋์ ์์ ์ ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ์์ ์ด ์ํ์ง ์์ ์๊ฐ๋์ ๋ ์ง๋ฅผ ํ์ธํด์ผ ํ ์๋ ์์ต๋๋ค.
์ด๊ฒ. ์ด๊ฒ์ด DateTimeKind
๊ฐ ๊นจ์ง ์ด์ ์
๋๋ค. Utc
/ Local
/ Unknown
(๋๋ ์ ์ฌํ API์ Other
)๋ ๋๋ฉ์ธ์ ๋ํ ์คํด๋ฅผ ๋ํ๋
๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ java.time ๋ฐ NodaTime๊ณผ ์ ์ฌํ๊ฒ ๋ณด์ด๋ ์์ฌ์ ์์ ํ๊ณ ํ๋์ ์ธ ๋ ์ง/์๊ฐ API๋ฅผ ์ ๊ณตํด์ผ ํ๋ค๋ ์ ์ ๋ฐ๋ณตํ ๊ฒ์
๋๋ค.
๋๋ถ๋ถ์ ๊ฒฝ์ฐ DateTimeOffset
๋ ์ ์ ํ ๋๋ฉ์ธ ์ ํ์ด ์๋๋๋ค. ์ ๋ ์ฆ๊ฐ์ ์ธ ์ ๋ณด๊ฐ ์๋ ์ ๋ณด๋ ์ผ๋ฐ์ ์ผ๋ก DateTimeZoned
(์ธ์ ์ถ๊ฐํ ๋ ์คํ์
์ ์๋์ผ๋ก ์
๋ฐ์ดํธํจ)๋ก ๊ธฐ๋กํ๋ ๊ฒ์ด ๋ ๋ซ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ. ์ด๊ฒ์ด
DateTimeKind
๊ฐ ๊นจ์ง ์ด์ ์ ๋๋ค.Utc
/Local
/Unknown
(๋๋ ์ ์ฌํ API์Other
)๋ ๋๋ฉ์ธ์ ๋ํ ์คํด๋ฅผ ๋ํ๋ ๋๋ค.๋๋ ์ฐ๋ฆฌ๊ฐ java.time ๋ฐ NodaTime๊ณผ ์ ์ฌํ๊ฒ ๋ณด์ด๋ ์์ฌ์ ์์ ํ๊ณ ํ๋์ ์ธ ๋ ์ง/์๊ฐ API๋ฅผ ์ ๊ณตํด์ผ ํ๋ค๋ ์ ์ ๋ฐ๋ณตํ ๊ฒ์ ๋๋ค.
๋๋ถ๋ถ์ ๊ฒฝ์ฐ
DateTimeOffset
๋ ์ ์ ํ ๋๋ฉ์ธ ์ ํ์ด ์๋๋๋ค. ์ ๋ ์ฆ๊ฐ์ ์ธ ์ ๋ณด๊ฐ ์๋ ์ ๋ณด๋ ์ผ๋ฐ์ ์ผ๋กDateTimeZoned
(์ธ์ ์ถ๊ฐํ ๋ ์คํ์ ์ ์๋์ผ๋ก ์ ๋ฐ์ดํธํจ)๋ก ๊ธฐ๋กํ๋ ๊ฒ์ด ๋ ๋ซ์ต๋๋ค.