LocalDate

LocalDate

λ‚ μ§œλ§Œ μ‚¬μš©ν•  μ‚¬μš©

LocalDate today = LocalDate.now();              // ν˜„μž¬ λ‚ μ§œ 좜λ ₯ (ν˜„μž¬ λ‚ μ§œ)
LocalDate date = LocalDate.of(ν˜„μž¬μ—°λ„, ν˜„μž¬μ›”, ν˜„μž¬μΌ);    // νŠΉμ • λ‚ μ§œ 좜λ ₯ (ν˜„μž¬ λ‚ μ§œ)

date.getYear();         // 연도 : ν˜„μž¬μ—°λ„
date.getMonth();        // μ›” : ν˜„μž¬μ›”
date.getMonthValue();   // μ›” : ν˜„μž¬μ›”
date.getDateOfMonth();  // 일 : ν˜„μž¬μΌ
date.getDayOfYear();    // μ˜¬ν•΄ λ©°μΉ μ§Έ : ν˜„μž¬ λ‚ μ§œμ˜ 연쀑 일 수
date.getDayOfWeek();    // μš”μΌ : ν˜„μž¬ μš”μΌ
date.isLeapYear();      // μš΄λ…„μ—¬λΆ€ : ν˜„μž¬ 연도가 μœ€λ…„μΈμ§€ μ—¬λΆ€

// LocalDate -> String
date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));

// String -> LocalDate
LocalDate.parse("ν˜•μ‹μ— λ§žλŠ” λ¬Έμžμ—΄");

// LocalDate -> LocalDateTime
date.atTime(ν˜„μž¬μ‹œ, ν˜„μž¬λΆ„);

LocalTime

μ‹œκ°„λ§Œ μ‚¬μš©ν•  μ‚¬μš©

LocalTime now = LocalTime.now();                // ν˜„μž¬ μ‹œκ°„ 좜λ ₯ (ν˜„μž¬ μ‹œκ°„)
LocalTime time = LocalTime.of(ν˜„μž¬μ‹œ, ν˜„μž¬λΆ„, ν˜„μž¬μ΄ˆ, ν˜„μž¬λ‚˜λ…Έμ΄ˆ);  // νŠΉμ • μ‹œκ°„ 좜λ ₯ (ν˜„μž¬ μ‹œκ°„)

time.getHour();     // μ‹œ : ν˜„μž¬μ‹œ
time.getMinute();   // λΆ„ : ν˜„μž¬λΆ„
time.getSecond();   // 초 : ν˜„μž¬μ΄ˆ
time.getNano();     // λ‚˜λ…Έμ΄ˆ : ν˜„μž¬λ‚˜λ…Έμ΄ˆ

LocalDateTime

λ‚ μ§œμ™€ μ‹œκ°„ λͺ¨λ‘ μ‚¬μš©ν•  μ‚¬μš©

LocalDateTime now = LocalDateTime.now();                        // ν˜„μž¬ λ‚ μ§œμ™€ μ‹œκ°„ 좜λ ₯ (ν˜„μž¬ λ‚ μ§œ 및 μ‹œκ°„)
LocalDateTime time = LocalDateTime.of(ν˜„μž¬μ—°λ„, ν˜„μž¬μ›”, ν˜„μž¬μΌ, ν˜„μž¬μ‹œ, ν˜„μž¬λΆ„);    // νŠΉμ • λ‚ μ§œμ™€ μ‹œκ°„ 좜λ ₯ (ν˜„μž¬ λ‚ μ§œ 및 μ‹œκ°„)
// LocalDate + LocalTime μ‘°ν•©
LocalDateTime time2 = LocalDateTime.of(LocalDate.now(), LocalTime.now());

// LocalDateTime -> String
time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

// String -> LocalDateTime
LocalDateTime.parse("ν˜•μ‹μ— λ§žλŠ” λ¬Έμžμ—΄");
LocalDateTime.parse("ν˜•μ‹μ— λ§žλŠ” λ¬Έμžμ—΄", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

// LocalDateTime -> LocalDate
LocalDate.from(time);

λ‚ μ§œ 차이 계산

Period 클래슀

LocalDate now = LocalDate.now();
LocalDate target = LocalDate.of(ν˜„μž¬μ—°λ„, ν˜„μž¬μ›”, ν˜„μž¬μΌ);

Period period = Period.between(now, target);

period.getYears();      // ν˜„μž¬μ™€ νƒ€κ²Ÿ λ‚ μ§œ κ°„μ˜ μ—° 수
period.getMonths();     // ν˜„μž¬μ™€ νƒ€κ²Ÿ λ‚ μ§œ κ°„μ˜ μ›” 수
period.getDays();       // ν˜„μž¬μ™€ νƒ€κ²Ÿ λ‚ μ§œ κ°„μ˜ 일 수

μ‹œκ°„ κΈ°μ€€μœΌλ‘œ κ³„μ‚°ν•˜κΈ° (ChronoUnit)

LocalDate now = LocalDate.now();
LocalDate target = LocalDate.of(ν˜„μž¬μ—°λ„, ν˜„μž¬μ›”, ν˜„μž¬μΌ);

ChronoUnit.DAYS.between(now, target);   // ν˜„μž¬μ™€ νƒ€κ²Ÿ λ‚ μ§œ κ°„μ˜ 일 수

μ‹œκ°„ 차이 계산

Duration 클래슀

LocalTime now = LocalTime.now();  // ν˜„μž¬ μ‹œκ°„ 좜λ ₯ (ν˜„μž¬ μ‹œκ°„)
LocalTime target = LocalTime.of(ν˜„μž¬μ‹œ, ν˜„μž¬λΆ„, ν˜„μž¬μ΄ˆ);  // νŠΉμ • μ‹œκ°„ 좜λ ₯ (ν˜„μž¬ μ‹œκ°„)

Duration duration = Duration.between(now, target);

duration.getSeconds();      // ν˜„μž¬μ™€ νƒ€κ²Ÿ μ‹œκ°„ κ°„μ˜ 초 수
duration.getNano();         // ν˜„μž¬μ™€ νƒ€κ²Ÿ μ‹œκ°„ κ°„μ˜ λ‚˜λ…Έμ΄ˆ 수

YearMonth

λ…„κ³Ό μ›”λ§Œ μ‚¬μš©ν•  경우 μ‚¬μš©ν•  수 μžˆλŠ” 클래슀 (yyyy-MM)

YearMonth date = YearMonth.of(ν˜„μž¬μ—°λ„, ν˜„μž¬μ›”);     // ν˜„μž¬ 연도와 μ›” 좜λ ₯ (ν˜„μž¬ 연도와 μ›”)

date.getYear();             // ν˜„μž¬ 연도
date.getMonth();            // ν˜„μž¬ μ›”
date.getMonthValue());      // ν˜„μž¬ μ›”
date.atEndOfMonth();        // ν˜„μž¬ μ›”μ˜ λ§ˆμ§€λ§‰ λ‚ μ§œ
date.lengthOfMonth();       // ν˜„μž¬ μ›”μ˜ 일 수
date.plusMonths(1);         // ν˜„μž¬ μ›”μ—μ„œ ν•œ 달 ν›„
date.minusMonths(1);        // ν˜„μž¬ μ›”μ—μ„œ ν•œ 달 μ „
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.Period;
import java.time.Duration;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.time.YearMonth;

public class Main {
    public static void main(String[] args) {
        // ν˜„μž¬ λ‚ μ§œ 및 μ‹œκ°„
        LocalDate today = LocalDate.now();
        LocalTime now = LocalTime.now();
        LocalDateTime currentDateTime = LocalDateTime.now();
        
        // νŠΉμ • λ‚ μ§œ 및 μ‹œκ°„
        LocalDate date = LocalDate.of(2024, 5, 7);
        LocalTime time = LocalTime.of(14, 30);
        LocalDateTime dateTime = LocalDateTime.of(2024, 5, 7, 14, 30);
        
        // LocalDate λ©”μ„œλ“œ
        int year = today.getYear();                 // 연도 : 2024
        int month = today.getMonthValue();          // μ›” : 5
        int dayOfMonth = today.getDayOfMonth();     // 일 : 7
        int dayOfYear = today.getDayOfYear();       // μ˜¬ν•΄ λ©°μΉ μ§Έ : 128
        LocalDate tomorrow = today.plusDays(1);     // 내일 λ‚ μ§œ
        
        // LocalTime λ©”μ„œλ“œ
        int hour = now.getHour();                   // μ‹œ : 14
        int minute = now.getMinute();               // λΆ„ : 30
        int second = now.getSecond();               // 초 : 15
        
        // LocalDateTime λ©”μ„œλ“œ
        LocalDateTime nextMonth = currentDateTime.plusMonths(1);  // ν•œ 달 ν›„
        
        // λ‚ μ§œ ν˜•μ‹ 지정
        String formattedDate = today.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));  // 2024-05-07
        String formattedDateTime = currentDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 2024-05-07 14:30:15
        
        // λ‚ μ§œ 차이 계산
        Period period = Period.between(today, date);  // ν˜„μž¬ λ‚ μ§œμ™€ date κ°„μ˜ κΈ°κ°„
        long daysBetween = ChronoUnit.DAYS.between(today, date); // ν˜„μž¬ λ‚ μ§œμ™€ date κ°„μ˜ 일 수
        
        // μ‹œκ°„ 차이 계산
        Duration duration = Duration.between(now, time);  // ν˜„μž¬ μ‹œκ°„κ³Ό time κ°„μ˜ κΈ°κ°„
    }
}

8λ²„μ „μ—μ„œλŠ” μƒˆλ‘œμš΄ λ‚ μ§œμ™€ μ‹œκ°„μ„ λ‹€λ£¨λŠ” 클래슀인 LocalDate, LocalTime, LocalDateTime이 λ„μž…λ˜μ—ˆμŠ΅λ‹ˆλ‹€(java.time).
μ΄μ œλŠ” μ΄λŸ¬ν•œ 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‚ μ§œμ™€ μ‹œκ°„μ„ λ‹€λ£¨λŠ” 것이 ꢌμž₯λ©λ‹ˆλ‹€.
이전에 μ‚¬μš©λ˜λ˜ Date와 Calendar ν΄λž˜μŠ€λŠ” μ‚¬μš©μ„ 지양해야 ν•©λ‹ˆλ‹€(java.util).

μ°Έκ³  λΈ”λ‘œκ·Έ: europani.github.io

Leave a comment