개발이야기
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
아래 링크로 들어가면 직접 코드를 실행시켜볼 수 있습니다.
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
반응형