์ด๋ฒˆ ํ•™์Šต์—์„œ๋Š” Java์˜ ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ์ฒ˜๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(java.time)์™€ ์ค‘์ฒฉ ํด๋ž˜์Šค ํ™œ์šฉ์— ๋Œ€ํ•ด ๋‹ค๋ฃจ์—ˆ๋‹ค. ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๊ณ„์‚ฐ์˜ ๋ณต์žก์„ฑ์„ ์ดํ•ดํ•˜๊ณ , ์‹ค์งˆ์ ์ธ ์ฝ”๋“œ ์ž‘์„ฑ๋ฒ•์„ ์—ฐ์Šตํ•˜์˜€๋‹ค. ํŠนํžˆ LocalDateTime, ZonedDateTime, OffsetDateTime๊ณผ ๊ฐ™์€ ์ฃผ์š” ํด๋ž˜์Šค๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•™์Šตํ•˜์˜€์œผ๋ฉฐ, ์ •์  ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ๋‚ด๋ถ€ ํด๋ž˜์Šค์˜ ์ฐจ์ด์™€ ํ™œ์šฉ๋ฒ•๋„ ์ •๋ฆฌํ•˜์˜€๋‹ค.


1.  ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ์ฒ˜๋ฆฌ์˜ ํ•„์š”์„ฑ

 

๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๊ณ„์‚ฐ์˜ ๋ณต์žก์„ฑ

๋‚ ์งœ ๊ฐ„ ์ฐจ์ด ๊ณ„์‚ฐ ์‹œ ์œค๋…„, ๊ฐ ์›”์˜ ์ผ์ˆ˜๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•จ.

์ผ๊ด‘ ์ ˆ์•ฝ ์‹œ๊ฐ„(DST)๊ณผ ํƒ€์ž„์กด(Time Zone) ๋ณ€ํ™˜์˜ ์–ด๋ ค์›€.

๋‹ค์–‘ํ•œ ํ˜•์‹์œผ๋กœ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ํ‘œํ˜„ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋งŽ์Œ.


2. Java ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ์ฒ˜๋ฆฌ (java.time)

 

์ฃผ์š” ํด๋ž˜์Šค์™€ ํ™œ์šฉ๋ฒ•

 

LocalDate

๋‚ ์งœ๋งŒ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉ. (์˜ˆ: 2025-01-01)

์ƒ์„ฑ ๋ฐฉ๋ฒ•: LocalDate.now(), LocalDate.of(๋…„, ์›”, ์ผ)

๊ณ„์‚ฐ: plusDays(), minusMonths() ๋“ฑ์œผ๋กœ ๋‚ ์งœ ์—ฐ์‚ฐ ๊ฐ€๋Šฅ.

LocalDate today = LocalDate.now();
LocalDate specificDate = LocalDate.of(2025, 1, 1);
LocalDate tenDaysLater = specificDate.plusDays(10);

 

LocalTime

์‹œ๊ฐ„๋งŒ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉ. (์˜ˆ: 14:30:00)

์ƒ์„ฑ ๋ฐฉ๋ฒ•: LocalTime.now(), LocalTime.of(์‹œ, ๋ถ„, ์ดˆ)

 

LocalDateTime

๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ํ•จ๊ป˜ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉ. (์˜ˆ: 2025-01-01T14:30:00)

LocalDate์™€ LocalTime์„ ํ•ฉ์ณ ์ƒ์„ฑ ๊ฐ€๋Šฅ.

๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๋ถ„๋ฆฌ: toLocalDate(), toLocalTime()

 

ZonedDateTime

ํƒ€์ž„์กด์ด ํฌํ•จ๋œ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉ.

ZoneId์™€ ํ•จ๊ป˜ ์ƒ์„ฑ ๊ฐ€๋Šฅ.

ํƒ€์ž„์กด ๋ณ€ํ™˜: withZoneSameInstant(ZoneId)

 

OffsetDateTime

UTC ์˜คํ”„์…‹๋งŒ ํฌํ•จ๋œ ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ํ‘œํ˜„.

ํƒ€์ž„์กด ์ •๋ณด๋Š” ์—†์ง€๋งŒ UTC ๊ธฐ์ค€ ๋ณ€ํ™˜์— ์œ ์šฉ.

 


3. ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ๋‚ด๋ถ€ ํด๋ž˜์Šค

 

์ค‘์ฒฉ ํด๋ž˜์Šค๋ž€?

ํด๋ž˜์Šค ๋‚ด๋ถ€์— ๋˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ๊ตฌ์กฐ.

ํฌ๊ฒŒ ์ •์  ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ๋‚ด๋ถ€ ํด๋ž˜์Šค๋กœ ๋‚˜๋‰จ.

 

์ •์  ์ค‘์ฒฉ ํด๋ž˜์Šค (Static Nested Class)

static ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ.

๋ฐ”๊นฅ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์— ์ข…์†๋˜์ง€ ์•Š์Œ.

์‚ฌ์šฉ ์˜ˆ์‹œ:

class Outer {
    static class StaticNested {
        void display() {
            System.out.println("์ •์  ์ค‘์ฒฉ ํด๋ž˜์Šค");
        }
    }
}

Outer.StaticNested nested = new Outer.StaticNested();
nested.display();

 

 

๋‚ด๋ถ€ ํด๋ž˜์Šค (Inner Class)

static์ด ๋ถ™์ง€ ์•Š์Œ.

๋ฐ”๊นฅ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์™€ ์—ฐ๊ด€.

๋ฐ”๊นฅ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ.

class Outer {
    class Inner {
        void display() {
            System.out.println("๋‚ด๋ถ€ ํด๋ž˜์Šค");
        }
    }
}

Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.display();

 

• Java์˜ java.time ํŒจํ‚ค์ง€๋Š” ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ง๊ด€์ ์œผ๋กœ ๋งŒ๋“ค์–ด ์ค€๋‹ค.
• ์ค‘์ฒฉ ํด๋ž˜์Šค๋Š” ์ฝ”๋“œ์˜ ์บก์Аํ™”์™€ ๋…ผ๋ฆฌ์  ๊ทธ๋ฃนํ™”๋ฅผ ์œ„ํ•ด ์œ ์šฉํ•˜๋‹ค.
• ์ •์  ์ค‘์ฒฉ ํด๋ž˜์Šค๋Š” ๋ฐ”๊นฅ ํด๋ž˜์Šค์™€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ๋‚ด๋ถ€ ํด๋ž˜์Šค๋Š” ๋ฐ”๊นฅ ํด๋ž˜์Šค์™€ ๋ฐ€์ ‘ํ•œ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค.

+ Recent posts