Skip to content

Latest commit

ย 

History

History
66 lines (46 loc) ยท 3.67 KB

File metadata and controls

66 lines (46 loc) ยท 3.67 KB

JAVA Instant์™€ LocalDateTime์˜ ๋‹ค๋ฅธ์ 

Java 8 ์ด์ƒ๋˜๋ฉด์„œ Date, Time, Timestamp๋“ฑ์ด ๋ ˆ๊ฑฐ์‹œ๊ฐ€ ๋˜์–ด๋ฒ„๋ฆฌ๊ณ  ๋ฌด์˜์‹์ ์œผ๋กœ LocalDateTime, ZonedDateTime, LocalTime ๋“ฑ์„ Database Entity์—์„œ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์„ ๋งŽ์ด ๋ด์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋˜์ค‘ Instant๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด์„œ๋ถ€ํ„ฐ ์˜๊ตฌ์‹ฌ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋” ์ข‹์€๊ฑฐ ๊ฐ™์€๋ฐ ์™œ ์‚ฌ๋žŒ๋“ค์ด ์•ˆ์“ฐ๋Š”๊ฑฐ์˜€์ง€? ํ•˜๋Š” ์ƒ๊ฐ๋ถ€ํ„ฐ ํ•˜๊ฒŒ๋˜๋ฉด์„œ ์–ด๋– ํ•œ ํƒ€์ž…์„ ์–ด๋А๊ณณ์— ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ํ•˜๋Š”์ง€ ์กฐ์‚ฌํ•ด๋ณธ ๊ฒฐ๊ณผ๋ฅผ ๊ณต์œ ํ•˜๋ ค ํฌ์ŠคํŒ…์„ ๋‚จ๊น๋‹ˆ๋‹ค.

Table of Contents

Instant

java-date-instant

๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด longํ˜• Unix Timestamp(POSIX Time, Epoch Time)์„ ์“ฐ๋Š” ์ด์œ ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. integer, long type์„ ์ด์šฉํ•œ ์ •๋ ฌ / ์—ฐ์‚ฐ๋“ฑ์—์„œ ๋‹ค๋ฅธ ํƒ€์ž…๋“ค๋ณด๋‹ค๋Š” ๋น ๋ฅธ ์†๋„๋ฅผ ์ž๋ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Unix Timestamp๋Š” Year 2038 problem์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ์ด๋ผ๋„ ๋‹ค๋ฅธ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜์˜จ๊ฒƒ์ด Java์˜ Instant์ž…๋‹ˆ๋‹ค.

Instant๋Š” ์ž๋ฐ” 1.8 java.time package์— ๋“ค์–ด๊ฐ€์žˆ์œผ๋ฉฐ UTC์˜ ํƒ€์ž„ ๋ผ์ธ์—์žˆ๋Š” ์ˆœ๊ฐ„์œผ๋กœ, 1970๋…„ 1์›” 1์ผ UTC์˜ ์ฒซ ๋ฒˆ์งธ ์ˆœ๊ฐ„ ์ดํ›„์˜ ํ˜„์žฌ ์‹œ๊ฐ„๊นŒ์ง€์˜ ๋‚˜๋…ธ์ดˆ๋ฅผ ๋‚˜ํƒ€๋‚ธ ๊ฐ’ ์ž…๋‹ˆ๋‹ค. ๋ถ€๋ถ„์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์€ UTC๋กœ ์ด๋ฃจ์–ด์ ธ์•ผํ•˜๋ฏ€๋กœ ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ธฐ์— ํŽธ๋ฆฌํ•œ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

java-date-time-types

LocalDate, LocalTime, LocalDateTime

java-date-localdate java-date-localtime java-date-time-localdatetime

Java Time์—์„œ Local์ด ๋“ค์–ด๊ฐ„๋‹ค๋Š”๊ฒƒ์€ ์‹œ๊ฐ„๋Œ€(Zone Offset/Zone Region)์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์—†๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ์ด๋Ÿฐ๋‚ ์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์€ ๊ทธ ๋‚ ์ด ์˜๋ฏธํ•˜๋Š” ์ฆ‰, ์ƒ์ผ ์ด๋‚˜ ๊ธฐ๋…์ผ์— ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ๋‚˜๋ผ์—์„œ ํ•˜๋Š” ์ด๋ฒคํŠธ ์‹œ๊ฐ„์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ OffsetDateTime, ZonedDateTime์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

OffsetDateTime

java-date-offsetdatetime LocalDateTime + ZoneOffset์˜ ๊ฐœ๋…์œผ๋กœ OffsetDateTime๋Š” UTC๋ณด๋‹ค ๋ช‡ ์‹œ๊ฐ„/๋ถ„/์ดˆ ์•ž ๋˜๋Š” ๋’ค์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆœ๊ฐ„์„ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„์œผ๋กœ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. Offset์˜ ํฌ๊ธฐ(์‹œ๊ฐ„/๋ถ„/์ดˆ)๋Š” ZoneOffset ํด๋ž˜์Šค๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„/๋ถ„/์ดˆ๊ฐ€ 0์ด๋ฉด OffsetDateTime์€ Instant ๋™์ผํ•œ UTC์˜ ์ˆœ๊ฐ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

ZonedDateTime

java-date-zoneddatetime OffsetDateTime + ZoneRegion์— ๋Œ€ํ•œ ์ •๋ณด๊นŒ์ง€ ํฌํ•จํ•œ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. OffsetDateTime๊ณผ์˜ ์ฐจ์ด์ ์€ DST(Daylight Saving Time)์™€ ๊ฐ™์€ Time Transition Rule์„ ํฌํ•จํ•˜๋Š” ZoneRegion์˜ ์œ ๋ฌด์ฐจ์ด ์ž…๋‹ˆ๋‹ค. DST์—๋Š” CET(๊ฒจ์šธ), CEST(์—ฌ๋ฆ„) ํ˜•ํƒœ๊ฐ€ ์žˆ๋Š”๋ฐ Time Zone(CET)๋กœ ํ†ต์ผํ•˜๊ณ  Time Transition Rule์„ ๊ฐ€์ง€๋Š” ZoneRules๋ฅผ ํ†ตํ•ด ์•Œ์•„์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ๊ณ„์‚ฐํ•ด์ค๋‹ˆ๋‹ค.

JDBC์—์„œ ๋ณ€๊ฒฝ๋˜๋Š” ํ˜•ํƒœ

java-date-java-sql

์ฐธ๊ณ  https://stackoverflow.com/questions/32437550/whats-the-difference-between-instant-and-localdatetime https://perfectacle.github.io/2018/09/26/java8-date-time/