본문 바로가기
Book

[독서 기록] 모던 자바 인 액션 12장, 새로운 날짜와 시간 api

by Renechoi 2023. 1. 11.

java.time 패키지의 local 을 사용해보기 

 

LocalDate 만들고 값 읽기 

 

LocalDate date = LocalDate.of(2017, 9, 21);
int year = date.getYear();						// 2016
Month month = date.getMonth();					// September
int day = date.getDayOfMonth();					// 21
DayOfWeek dow = date.getDayOfWeek();		 	// thursday
int len = date.lenghOfMonth();					// 31
boolean leap = date.isLeapYear(); 				// false (윤년 여부)

 

 

팩토리 메서드 now는 시스템 시계의 정보를 이용해서 현재 날짜 정보를 얻는다. 

 

LocalDate today = LocalDate.now();

 

내장 메서드를 이용하기 

 

int year = date.getYear();

 

 

 

duration 만들기 

 

Duration d1 = Duration.between(time1, time2); 
Duration d1 = Duration.between(dateTime1, dateTime2);
Duration d2 = Duration.between(instant1, instant2);

 

 

절대적인 방식으로 LocalDate의 속성 바꾸기 

LocalDate date1 = LocalDate.of(2017, 9, 21); 
LocalDate date2 = date1.withYear(2011);

 

- 396p 

 

 

TemporalAdjuster 사용하기 

 

import static java.time.temporal.TemporalAdjusters.*; 

LocalDate date1 = LocalDate.of(2014, 3, 18);
LocalDate date2 = date1.with(nextOrSame(DayOfWeek.SUNDAY));
LocadlDate date3 = date2.with(lastDayOfMonth());

 

 

TemporalAdjuster nextWorkingDay = TemporalAdjusters.ofDateAdjuster( 
	temporal -> {
    	DayOfWeek dow = DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));
        int dayToAdd = 1;
        if (dow == DayOfWeek.FRIDAY) dayToAdd = 3;
        else if (dow == DayOfWeek.SATURDAY) dayToAdd = 2;
        return temporal.plus(dayToAdd, chronoUnit.DAYS);
    });
    
    date = date.with(nextWorkingDay);
반응형