Spring basic part3 미션 정리

yshjft·2022년 4월 28일
0

✔︎ 쿼리 파리미터와 LocalDate

생성일을 조건을 조회를 하기 위해 쿼리 파리미터로 날짜(“yyyy-MM-dd”)를 전달 하였다. 하지만 Failed to convert value of type 'java.lang.String' to required type 'java.time.LocalDateTime’라는 문제를 만나게 되었다.

만약 쿼리 파라미터로 날짜를 넘겨 주고 싶다면 추가적인 처리를 해야한다.

✏️ @DateTimeFormat

  • @DateTimeFormat(iso = ISO.DATE_TIME) Date date
  • @DateTimeFormat(iso = ISO.DATE) LocalDate localDate
  • @DateTimeFormat(iso = ISO.DATE_TIME) LocalDateTime localDateTime

✏️ @DateTimeFormat with pattern

  • @DateTimeFormat(pattern="yyyyMMddHHmmss") Date date
  • @DateTimeFormat(pattern="yyyyMMdd") LocalDate localDate
  • @DateTimeFormat(pattern="yyyyMMddHHmmss") LocalDateTime localDateTime

✏️ WebMvcConfigurer Interface의 구현

@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);
    }
}

✏️ Configure Date-Time in Properties File

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

✔︎ Java 날짜 더하고 빼기

✏️ 현재시간

LocalDateTime now = LocalDateTime.now();

✏️ 3년 뒤

LocalDateTime threeYearsAfter = now.plusYears(3);

✏️ 2일 전

LocalDateTime twoDaysAgo = now.minusDays(2);

✏️ 2일전하고 3시간 전

LocalDateTime twoDaysAndThreeHoursAgo = now.minusDays(2).minusHours(3);

📄 참고 자료

profile
꾸준히 나아가자 🐢

0개의 댓글