아파치 공통 라이브러리에서 "DateUtils.truncate"은 사용해선 안됩니다

 

Java8에 도입된 ZonedDateTime 클래스를 사용하여 날짜를 잘라내는 것이 CommonsLang의 DateUtils 클래스보다 훨씬 빠릅니다.

참고: 이 규칙은 프로젝트의 sonar.java.source의 값이 8보다 낮은 경우(java8) 검사하지 않습니다.

규칙을 어긴 코드

public Date trunc(Date date) {
  return DateUtils.truncate(date, Calendar.SECOND);  // 규칙을 어긴 코드
}

규칙을 준수한 해결책

public Date trunc(Date date) {
  Instant instant = date.toInstant();
  ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault());
  ZonedDateTime truncatedZonedDateTime = zonedDateTime.truncatedTo(ChronoUnit.SECONDS);
  Instant truncatedInstant = truncatedZonedDateTime.toInstant();
  return Date.from(truncatedInstant);
}

If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project