평소에 LocalDate, LocalDateTime을 세부적으로 다룰 일이 많지 않았는데 회사에서 취소수수료율 관련 코드를 짜며 다루게 되었습니다.
하면서 공유할 2가지 팁이 있어 간단히 공유합니다.
주어진 날짜의 0시 0분 0초
주어진 날짜(LocalDate)의 0시 0분 0초를 다른 시점(LocalDateTime)과 비교해야 했습니다.
아래와 같이 할 수도 있지만..
var someday = LocalDate.now();
someday.atTime(0, 0, 0, 0);
더 좋은 방법은 아래와 같이 제공되는 메서드를 사용하는 것이 가독성 측면에서 훨씬 좋습니다.
var someday = LocalDate.now();
someday.atStartOfDay();
시간대 바꾸기
UTC 기준으로 계산 후 KST(Asia/Seoul)로 변환해야 하는 경우가 있습니다.
atStartOfDay의 파라미터로 ZoneId를 넘길 수 있는데 아래와 같이 UTC를 파라미터로 넘겨 필요한 계산을 하고 KST(Asia/Seoul)로 변환해주면 됩니다.
public LocalDateTime foo() {
var someday = LocalDate.now();
var zonedDateTime = someday.atStartOfDay(ZoneId.of("UTC"));
// do something
return zonedDateTime.withZoneSameLocal(ZoneId.of("Asia/Seoul"))
.toLocalDateTime();
}
'제안&정리' 카테고리의 다른 글
[Java] Thread Pool의 적정 Queue 사이즈 (0) | 2023.11.04 |
---|---|
[Spring] 동일 타입 여러 빈을 @Primary, @Qualifier 으로 사용하기 (0) | 2023.10.29 |
[Java] 스레드 풀 설정 - corePoolSize, maxPoolSize, queueCapacity (2) | 2023.10.15 |
[SQL] join에서 on vs where (0) | 2023.10.08 |
[Spock] 쉽게 테스트 작성하기 (0) | 2023.08.27 |