[JAVA] ๋” ์ž๋ฐ”, Java 8 Date์™€ Time API

2022. 4. 11. 14:18ใ†JAVA/study

728x90

1๏ธโƒฃ ์ด์ „ Date์™€ Time

java 8 ์— ์ƒˆ๋กœ์šด ๋‚ ์งœ์™€ ์‹œ๊ฐ„ API๊ฐ€ ์ƒ๊ธด ์ด์œ  

-> ๊ทธ์ „๊นŒ์ง€ ์‚ฌ์šฉํ–ˆ๋˜ java.util.Date ํด๋ž˜์Šค๋Š” mutuable(๋ณ€๊ฒฝ์ด ์‰ฌ์šด) ๋•Œ๋ฌธ์— Thread safeํ•˜์ง€ ์•Š์•˜๋‹ค. 

-> ํด๋ž˜์Šค ์ด๋ฆ„์ด ๋ช…ํ™•ํ•˜์ง€ ์•Š๋‹ค. (Date์ธ๋ฐ ์‹œ๊ฐ„์„ ๋‹ค๋ฃจ๊ธฐ๋„ ํ•˜๊ณ  ์ด๋ฆ„์ด ์ข€ ํ—ท๊ฐˆ๋ฆฐ๋‹ค.)

-> ๋ฒ„๊ทธ ๋ฐœ์ƒํ•  ์—ฌ์ง€๊ฐ€ ๋งŽ๋‹ค. (ํƒ€์ž… ์•ˆ์ •์„ฑ์ด ์—†๊ณ , ์›”์ด 0๋ถ€ํ„ฐ ์‹œ์ž‘..)

-> ๋‚ ์งœ ์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๊ฐ€ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ๋ณดํ†ต joda time์„ ์‚ฌ์šฉํ•˜๊ณค ํ–ˆ๋‹ค. 

 

 

2๏ธโƒฃ ์ฃผ์š” API 

- ๊ธฐ๊ณ„์šฉ ์‹œ๊ฐ„ machine Time ๊ณผ ์ธ๋ฅ˜์šฉ ์‹œ๊ฐ„ human time์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. 

- ๊ธฐ๊ณ„์šฉ ์‹œ๊ฐ„ epoke (1970๋…„ 1์›” 1์ผ 0์‹œ 0๋ถ„ 0์ดˆ)๋ถ€ํ„ฐ ํ˜„์žฌ๊นŒ์ง€์˜ ํƒ€์ž„ ์Šคํƒฌํ”„๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

- ์ธ๋ฅ˜์šฉ ์‹œ๊ฐ„์€ ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” ์—ฐ, ์›”, ์ผ, ์‹œ, ๋ถ„, ์ดˆ ๋“ฑ์„ ํ‘œํ˜„ํ•œ๋‹ค. 

- ํƒ€์ž„์Šคํƒฌํ”„๋Š” instant๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

- ํŠน์ • ๋‚ ์งœ LocalDate, ์‹œ๊ฐ„ LocalTime, ์ผ์‹œ LocalDateTime์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

- ๊ธฐ๊ฐ„์„ ํ‘œํ˜„ํ•  ๋•Œ๋Š” Duration ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜๊ณผ Period ๋‚ ์งœ ๊ธฐ๋ฐ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

- DateTimeFormmater๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ผ์‹œ๋ฅผ ํŠน์ •ํ•œ ๋ฌธ์ž์—ด๋กœ ํฌ๋งทํŒ…ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

3๏ธโƒฃ Date ์™€ Time API 

: ์ง€๊ธˆ ์ด ์ˆœ๊ฐ„์„ ๊ธฐ๊ณ„ ์‹œ๊ฐ„์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• 

Instant.now()  ํ˜„์žฌ UTC(GMT)๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. 

 

UTC(Universal Time Coordinated) : ๋‹จ์ˆœํ•˜๊ฒŒ ๋งํ•˜๋ฉด ์˜๊ตญ์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ ์ง€์—ญ์˜ ์‹œ์ฐจ๋ฅผ ๊ทœ์ •ํ•œ ๊ฒƒ 

GMT(Greenwich Mean Time) : ์˜๊ตญ ๋Ÿฐ๋˜์„ ๊ธฐ์ , ๋‰ด์งˆ๋žœ๋“œ ์›ฐ๋งํ„ด์„ ์ข…์ ์œผ๋กœ ํ•˜๋Š” ํ˜‘์ • ์„ธ๊ณ„์‹œ 

-> ๋‘˜์ด ๊ฐ™์Œ 

-> ํ•œ๊ตญ์€ ์˜๊ตญ๋ณด๋‹ค 9์‹œ๊ฐ„์ •๋„ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— UTC+ 9 ๋ผ๊ณ  ํ‘œ์‹œ 

 

 

์ธ๋ฅ˜์šฉ ์ผ์‹œ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• 

LocalDateTime.now() : ํ˜„์žฌ ์‹œ์Šคํ…œ Zone์— ํ•ด๋‹นํ•˜๋Š” (๋กœ์ปฌ) ์ผ์‹œ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. 

LocalDateTime.of(int month, int, int, int, int) : ๋กœ์ปฌ์˜ ํŠน์ • ์ผ์‹œ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.  

LocalDateTime.of(int Month, int, int, int, int, ZoneId) : ํŠน์ • Zone์˜ ํŠน์ • ์ผ์‹œ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. 

 

๊ธฐ๊ฐ„์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•

period/ Duration. between() 

 

ํŒŒ์‹ฑ ๋˜๋Š” ํฌ๋งคํŒ…

: ๋ฏธ๋ฆฌ ์ •์˜ํ•ด๋‘” ํฌ๋งท ์ฐธ๊ณ  

LocalDateTime.parse(String, DateTimeFormatter);

 

 

๋ ˆ๊ฑฐ์‹œ(legacy ๋‚ก์€) API ์ง€์›

: GregorialCalendar์™€ Date ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋ฅผ Instant๋‚˜ ZonedDateTime์œผ๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ 

java.util.TimeZone - > java.time.ZoneId๋กœ ์ƒํ˜ธ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90