생성일을 조건을 조회를 하기 위해 쿼리 파리미터로 날짜(“yyyy-MM-dd”)를 전달 하였다. 하지만 Failed to convert value of type 'java.lang.String' to required type 'java.time.LocalDateTime’라는 문제를 만나게 되었다.
만약 쿼리 파라미터로 날짜를 넘겨 주고 싶다면 추가적인 처리를 해야한다.
@DateTimeFormat(iso = ISO.DATE_TIME) Date date
@DateTimeFormat(iso = ISO.DATE) LocalDate localDate
@DateTimeFormat(iso = ISO.DATE_TIME) LocalDateTime localDateTime
@DateTimeFormat(pattern="yyyyMMddHHmmss") Date date
@DateTimeFormat(pattern="yyyyMMdd") LocalDate localDate
@DateTimeFormat(pattern="yyyyMMddHHmmss") LocalDateTime localDateTime
@Configuration
public class DateTimeFormatConfiguration implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar();
registrar.setDateFormatter(DateTimeFormatter.ISO_DATE);
registrar.setDateTimeFormatter(DateTimeFormatter.ISO_DATE_TIME);
registrar.registerFormatters(registry);
}
}
OR
@Configuration
public class DateTimeFormatConfiguration implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar();
registrar.setDateFormatter(DateTimeFormatter.ofPattern("yyyyMMdd"));
registrar.setDateTimeFormatter(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
registrar.registerFormatters(registry);
}
}
spring.mvc.format.date=yyyy-MM-dd
spring.mvc.format.date-time=yyyy-MM-dd HH:mm:ss
spring.mvc.format.time=HH:mm:ss
LocalDateTime now = LocalDateTime.now();
LocalDateTime threeYearsAfter = now.plusYears(3);
LocalDateTime twoDaysAgo = now.minusDays(2);
LocalDateTime twoDaysAndThreeHoursAgo = now.minusDays(2).minusHours(3);