Runtime: ์‹œ๊ฐ„๋Œ€ ๋ฐ DateTimeOffset

์— ๋งŒ๋“  2019๋…„ 11์›” 27์ผ  ยท  1๋…ผํ‰  ยท  ์ถœ์ฒ˜: dotnet/runtime

_์ด ๋ฌธ์ œ๋Š” ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ํ‹ฐ์ผ“์—์„œ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค._


ํ˜„์žฌ DateTimeOffset์€ ์‹œ๊ฐ„๋Œ€ ๋ณ€ํ™˜ ์˜ต์…˜์— ์—†๊ณ  TimeZoneInfo์šฉ Windows API๋Š” DateTimeOffset์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋กœ ์ธํ•ด ๋‚ ์งœ ์‹œ๊ฐ„ ์˜คํ”„์…‹์„ ๋‚ ์งœ ์‹œ๊ฐ„์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ๋‹ค์Œ TimeZoneInfo๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ๋‚ ์งœ ์‹œ๊ฐ„์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ ๋‹ค์‹œ DateTimeOffset์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์˜๋„ํ•œ ์‹œ์ ๊ณผ ์‹œ๊ฐ„๋Œ€๊ฐ€ ์œ ์ง€๋˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜•์‹๊ณผ ๊ด€๋ จ API ํ˜ธ์ถœ ๊ฐ„์˜ ์ด๋Ÿฌํ•œ ์ผ๋ จ์˜ ๋ณ€ํ™˜์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹œ๊ฐ„๋Œ€์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์— ์™„์ „ํžˆ ์ •ํ†ตํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐœ๊ฒฌํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ๋ณ€ํ™˜ ์˜ค๋ฅ˜์˜ ๊ฐ€๋Šฅ์„ฑ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

TimeZoneInfo ๋ฐ DateTimeOffset์„ ํ†ตํ•ฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ datetimeoffset์„ ์ƒˆ ์‹œ๊ฐ„๋Œ€๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ๋ณ€ํ™˜ ์ฒด์ธ์— ๋“ค์–ด๊ฐˆ ํ•„์š”๊ฐ€ ์—†๋„๋ก ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฉ”์†Œ๋“œ ์„ธํŠธ ๋˜๋Š” ์ƒˆ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ์ค„์–ด๋“ค๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ DateTimeOffset์„ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์›๋ณธ ๋Œ“๊ธ€

Denny Figueres์˜ 2019๋…„ 3์›” 15์ผ ์˜ค์ „ 08:16:

๋˜ํ•œ DateTimeOffset ToLocal์€ ์›น์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ํ‘œ์ค€ ์‹œ๊ฐ„๋Œ€๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์„œ๋ฒ„ ๋‚ ์งœ ์‹œ๊ฐ„/์‹œ๊ฐ„๋Œ€๋ฅผ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ € ํด๋ผ์ด์–ธํŠธ์™€ ๋‹ค๋ฅธ ์‹œ๊ฐ„๋Œ€์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋Š” ์ž์‹ ์ด ์†ํ•˜์ง€ ์•Š์€ ์‹œ๊ฐ„๋Œ€์˜ ๋‚ ์งœ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Jane Wu [MSFT] 2019๋…„ 3์›” 18์ผ ์˜ค์ „ 1์‹œ 36๋ถ„:

์‹œ๊ฐ„์„ ๋‚ด์–ด ์ œ์•ˆํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ณ„์† ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์‚ฌ์ „ ์ ๊ฒ€์„ ์‹ค์‹œํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ์ œํ’ˆ ํŒ€์—์„œ ๋ฌธ์ œ๋ฅผ ๋ถ„๋ฅ˜ํ•˜๋ฉด ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

api-needs-work api-suggestion area-System.Runtime

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋˜ํ•œ DateTimeOffset ToLocal์€ ์›น์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ํ‘œ์ค€ ์‹œ๊ฐ„๋Œ€๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์„œ๋ฒ„ ๋‚ ์งœ ์‹œ๊ฐ„/์‹œ๊ฐ„๋Œ€๋ฅผ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ € ํด๋ผ์ด์–ธํŠธ์™€ ๋‹ค๋ฅธ ์‹œ๊ฐ„๋Œ€์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋Š” ์ž์‹ ์ด ์†ํ•˜์ง€ ์•Š์€ ์‹œ๊ฐ„๋Œ€์˜ ๋‚ ์งœ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ. ์ด๊ฒƒ์ด DateTimeKind ๊ฐ€ ๊นจ์ง„ ์ด์œ ์ž…๋‹ˆ๋‹ค. Utc / Local / Unknown (๋˜๋Š” ์œ ์‚ฌํ•œ API์˜ Other )๋Š” ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์˜คํ•ด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ java.time ๋ฐ NodaTime๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋ณด์ด๋Š” ์ž์‚ฌ์˜ ์™„์ „ํ•˜๊ณ  ํ˜„๋Œ€์ ์ธ ๋‚ ์งœ/์‹œ๊ฐ„ API๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๋ฐ˜๋ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ DateTimeOffset ๋„ ์ ์ ˆํ•œ ๋„๋ฉ”์ธ ์œ ํ˜•์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ ˆ๋Œ€ ์ฆ‰๊ฐ์ ์ธ ์ •๋ณด๊ฐ€ ์•„๋‹Œ ์ •๋ณด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ DateTimeZoned (์–ธ์ œ ์ถ”๊ฐ€ํ•  ๋•Œ ์˜คํ”„์…‹์„ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•จ)๋กœ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค.

>๋ชจ๋“  ๋Œ“๊ธ€

๋˜ํ•œ DateTimeOffset ToLocal์€ ์›น์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ํ‘œ์ค€ ์‹œ๊ฐ„๋Œ€๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์„œ๋ฒ„ ๋‚ ์งœ ์‹œ๊ฐ„/์‹œ๊ฐ„๋Œ€๋ฅผ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ € ํด๋ผ์ด์–ธํŠธ์™€ ๋‹ค๋ฅธ ์‹œ๊ฐ„๋Œ€์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋Š” ์ž์‹ ์ด ์†ํ•˜์ง€ ์•Š์€ ์‹œ๊ฐ„๋Œ€์˜ ๋‚ ์งœ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ. ์ด๊ฒƒ์ด DateTimeKind ๊ฐ€ ๊นจ์ง„ ์ด์œ ์ž…๋‹ˆ๋‹ค. Utc / Local / Unknown (๋˜๋Š” ์œ ์‚ฌํ•œ API์˜ Other )๋Š” ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์˜คํ•ด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ java.time ๋ฐ NodaTime๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๋ณด์ด๋Š” ์ž์‚ฌ์˜ ์™„์ „ํ•˜๊ณ  ํ˜„๋Œ€์ ์ธ ๋‚ ์งœ/์‹œ๊ฐ„ API๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๋ฐ˜๋ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ DateTimeOffset ๋„ ์ ์ ˆํ•œ ๋„๋ฉ”์ธ ์œ ํ˜•์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ ˆ๋Œ€ ์ฆ‰๊ฐ์ ์ธ ์ •๋ณด๊ฐ€ ์•„๋‹Œ ์ •๋ณด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ DateTimeZoned (์–ธ์ œ ์ถ”๊ฐ€ํ•  ๋•Œ ์˜คํ”„์…‹์„ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•จ)๋กœ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰