[Kotlin] LocalDateTime 의 withNano 사용하기

정지현·2022년 8월 2일
0

개발 도중, 특정 날짜 범위 (시작일과 종료일) 를 전달받아 RDB에 저장해야하는 일이 생겼다.

예를 들어, 시작일과 종료일이 당일 하루 동안일 때,
시작일은 2022-08-02 00:00:00 이고, 종료일은 2022-08-02 23:59:59 인 것이다.

그래서 다음과 같은 로직으로 데이터를 RDB 에 저장시켰다.

val startDate: LocalDateTime = LocalDate.now().atStartOfDay() // 2022-08-02T00:00
val endDate: LocalDateTime = LocalDate.now().atTime(LocalTime.MAX) // 2022-08-02T23:59:59.999999999

endDate 의 나노 타임이 999... 인게 걸리긴 했지만, 실제 저장을 시킨 후 확인해보니 startDate 는 잘 들어가지만 endDate2022-08-03 00:00:00 으로 들어감을 확인하였다.

하루의 끝 시간을 계산하기 위해 LocalTime.MAX 를 사용해서 시간이 정말 최대값으로 찍힌 것이다.

따라서 이를 해결하기 위해서는 .withNano() 메소드를 사용하면 된다.

// 시간의 nano time 을 0으로 설정
val endDate: LocalDateTime = LocalDate.now().atTime(LocalTime.MAX).withNano(0)

profile
나를 성장시키는 좌절에 감사하고 즐기려고 노력 중

0개의 댓글