준호씨의 블로그

Kotlin - Date Loop. 시작일에서 종료일 까지 반복문 돌리기 본문

개발이야기

Kotlin - Date Loop. 시작일에서 종료일 까지 반복문 돌리기

준호씨 2022. 12. 27. 23:58
반응형

startDate에서 endDate까지 하루씩 순서대로 생성하고 싶은 경우가 있습니다. 그럴 때 사용하는 방법과 관련 팁들을 정리합니다.

 

시작일에서 종료일까지 하루씩 출력 - LocalDate의 datesUntil 사용하기

2022-12-27~2022-12-30을 순서대로 출력하는 방법입니다.

LocalDate.of(2022, 12, 27)
    .datesUntil(LocalDate.of(2022, 12, 30).plusDays(1))
    .forEach { it -> println(it) }

datesUntil의 값 직전까지만 돌기 때문에 plusDays(1)을 해서 하루를 더해주어야 합니다.

 

출력결과입니다. println으로 출력해서 한 줄에 하나씩 출력됩니다.

2022-12-27
2022-12-28
2022-12-29
2022-12-30

 

아래 링크로 들어가면 직접 코드를 실행시켜볼 수 있습니다.

https://pl.kotl.in/0IYCHjcYk

 

Kotlin Playground: Edit, Run, Share Kotlin Code Online

 

play.kotlinlang.org

 

참고로 datesUntil은 Java 9부터 생긴 메서드로 Java 9 이상의 완성에서 사용할 수 있습니다.

 

"yyyy-MM-dd" 문자열 형식의 날짜 사용하기

문자열로 된 날짜를 사용하게 되는 경우가 있습니다. LocalDate의 parse함수를 사용하면 됩니다.

LocalDate.parse("2022-12-27")
    .datesUntil(LocalDate.parse("2022-12-30").plusDays(1))
    .forEach { it -> println(it) }

 

"yyyyMMdd" 문자열 형식은?

DateTimeFormatter.BASIC_ISO_DATE를 사용하면 됩니다.

LocalDate.parse("20221227", DateTimeFormatter.BASIC_ISO_DATE)
    .datesUntil(LocalDate.parse("20221230", DateTimeFormatter.BASIC_ISO_DATE).plusDays(1))
    .forEach { it -> println(it) }

 

개성 넘치게 "yyyy~MM~dd" 문자열 형식을 사용하고 싶다면?

이런 일은 없겠지만 아무튼 특이한 날짜 포맷을 사용하려면 DateTimeFormatter.ofPattern을 사용하면 됩니다.

LocalDate.parse("2022~12~27", DateTimeFormatter.ofPattern("yyyy~MM~dd"))
    .datesUntil(LocalDate.parse("2022~12~30", DateTimeFormatter.ofPattern("yyyy~MM~dd")).plusDays(1))
    .forEach { it -> println(it) }

 

 

 

참고

https://www.baeldung.com/java-iterate-date-range

 

https://www.netguru.com/blog/traversing-through-dates-with-kotlin-range-expressions

 

반응형
Comments