Notice
Recent Posts
Recent Comments
준호씨의 블로그
Kotlin - Date Loop. 시작일에서 종료일 까지 반복문 돌리기 본문
반응형
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
아래 링크로 들어가면 직접 코드를 실행시켜볼 수 있습니다.
참고로 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
반응형
'개발이야기' 카테고리의 다른 글
MySQL - 테이블의 Index 확인하는 방법들 정리 (0) | 2023.01.06 |
---|---|
Kotlin - 어제, 오늘, 내일 구하기. LocalDate.now().plusDays (0) | 2022.12.28 |
python - date를 timestamp로 변환하기 (0) | 2022.11.28 |
MySQL - CHAR_LENGTH 함수로 문자의 길이를 구하자. INSERT, UPDATE에서 사용할 때 주의할 점 (0) | 2022.11.07 |
OSX - M1 개발환경 오류 - could not load a native library: netty_resolver_dns_native_macos_aarch_64 (0) | 2022.08.10 |
Comments