티스토리 뷰

728x90
반응형
LocalDate, DateTimeFormatter, ChronoUnit , IntStream 을 이용

 

   1. LocalDate : 날짜를 나타내는 불변의 날짜-시간 객체입니다. 종종 년-월-일로 간주됩니다.

   2. DateTimeFormatter : 날짜, 시간 개체를 처리하도록 도와주는 포맷터(Formatter) 이다.
   3. ChronoUnit : Enum 클래스로 날짜 기간 단위의 표준 집합이다.
  • 날짜 , 시간 또는 날짜-시간을 조작할 수 있는 단위 기반 액세스를 제공한다.
  • ChronoUnit.DAYS.between(Temporal tmp, Temporal tmp2) : 두 시간 개체 사이의 일자 차이를 계산
  • ChronoUnit 열거 종류는 총 16가지 종류가 있다.
   4. IntStream : 순차적 및 병렬을 지원하는 기본 int 값 요소의 시퀀스이다.
  • iterate(int seed, IntUnaryOperator f) : 반복에 의해 생성된 무한 순차적 순서를 반환한다.
  • limit(long maxSize) : 스트림 요소로 구성된 스트림의 길이를 제한하여 반환한다. (예 : iterate 같은 반복문의 길이를 제한하는 역할)
  • mapToObj (IntFuntion<? extends U> mapper) : 입력된 결과로 구성된 개체 값을 반환한다.
 

IntStream (Java Platform SE 8 )

Returns an infinite sequential ordered IntStream produced by iterative application of a function f to an initial element seed, producing a Stream consisting of seed, f(seed), f(f(seed)), etc. The first element (position 0) in the IntStream will be the prov

docs.oracle.com

 

예시 코드) 2022-01-01 ~ 2022-01-05 사이의 날짜 리스트 구하기

결과 : [2022-12-31,2022-01-02,2022-01-03,2022-01-04]
 
int firstMonth =  Integer.parseInt(searchVO.getIndate().split("-")[1]);
int secondMonth =  Integer.parseInt(searchVO.getOutdate().split("-")[1]);
if(firstMonth < secondMonth) {
    searchVO.setSdate(searchVO.getOutdate());
    days =  calendarCampsiteService.selectCampsiteList(searchVO);

    DateTimeFormatter format =  DateTimeFormatter.ofPattern("yyyy-MM-dd"); //날짜 양식 설정
    LocalDate firstDt =  LocalDate.parse(searchVO.getIndate(),format);// String -> LocalDate 형으로 변경
    LocalDate lastDt =  LocalDate.parse(searchVO.getOutdate(),format);// String -> LocalDate 형으로 변경

    int numOfDayBetween = (int)  ChronoUnit.DAYS.between(firstDt, lastDt); // 두 날짜 사이의 차이를 숫자로 구함

    //시작일자와 마지막일자 사이의 값들을 구할 수 있다.  java 8 버전 부터 제공해주고 있음
    List<LocalDate> dtList = IntStream.iterate(0,i  -> i+1).limit(numOfDayBetween).mapToObj(i ->  firstDt.plusDays(i)).collect(Collectors.toList());

}

 

주의) 위의 내용은 java 8 버전부터 제공하는 기술이다.

 

728x90
반응형
250x250
반응형
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함