그냥 아주 간단한 내용입니다. 해당 날짜의 시작시간과 끝 시간을 만들고 싶을때가 있는데. LocalDate 를 쓰면 asStartOfDay 라는 메서드를 통해서 쉽게 시작 시간을 구할 수 있습니다.
import java.time.LocalDate;
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
LocalDate a = LocalDate.of(2014, 6, 30);
LocalDateTime l = a.atStartOfDay();
System.out.println(l);
}
}
그런데 끝 시간을 구하는 건 애매하고, 또한 LocalDateTime 이 아니라 LocalDate 에서 구하는 거라 귀찮습니다.(그러나 이 블로깅을 하면서… 아주 많은 방법이 있다는 것을 알고 여기서… 접어야…)
LocalDate.now().atTime(23, 59, 59); //23:59:59
LocalDate.now().atTime(LocalTime.MAX); //23:59:59.999999999
LocalDate.now().atTime(LocalTime.MIDNIGHT); //00:00:00.000000000
LocalDate.now().atTime(LocalTime.MIN); //00:00:00.000000000
LocalDate.now().atTime(LocalTime.NOON); //12:00:00.000000000
LocalDate.now().atTime(LocalTime.MAX); //23:59:59.999999999
위와 같은 방법들과 함께 LocaDateTime 에서 바로 구할때는 with 를 사용하면 가볍게 구할 수 있습니다.(이게 말하려고 하던건데…)
val start = LocalDateTime.now().with(LocalTime.MIN)
val end = LocalDateTime.now().plusSeconds(-1)
그런데 왜 저는 저기서 1초를 빼줬을까요? LocalTime.MAX는 위에서 보여주듯이 23:59:59.999999999 가 되면서 Mysql 등의 DateTime 에 들어가면 다음날이 되버립니다. 실제로는 다음날의 00:00:00 이 되어버리는 거죠.
가벼운 팁 여기서 끝…