public static String getIsoDateTimeWithoutT(LocalDateTime localDateTime) {
return DateTimeFormatter.ISO_DATE_TIME.format(localDateTime).replace("T", " ");
}
DateTimeFormatter.ISO_DATE_TIME
은 Temporal
중에서도 LocalDateTime
, OffsetDateTime
, 혹은 ZonedDateTime
에만 쓸 수 있다.
public static String safeGetIsoDateTimeWithoutT(LocalDateTime localDateTime) {
return localDateTime != null ? CustomDateTimeFormatter.getIsoDateTimeWithoutT(localDateTime) : "-";
}
이때문에 null 처리용 util 에서 method parameter 를 다른 util 과 다르게 Temporal
으로 받을 수 없다. 현재 프로젝트에서 쓰이는 LocalDateTime
만 받을 수 있도록 구현했다.
public static String getIsoDateTimeWithoutT(Temporal temporal) {
if (temporal instanceof LocalDateTime) {
return DateTimeFormatter.ISO_DATE_TIME.format((LocalDateTime) temporal).replace("T", " ");
} else if (temporal instanceof OffsetDateTime) {
return DateTimeFormatter.ISO_DATE_TIME.format((OffsetDateTime) temporal).replace("T", " ");
} else if (temporal instanceof ZonedDateTime) {
return DateTimeFormatter.ISO_DATE_TIME.format((ZonedDateTime) temporal).replace("T", " ");
} else {
throw new IllegalArgumentException("Unsupported Temporal type: " + temporal.getClass().getName());
}
}
프로젝트에서 LocalDateTime
, OffsetDateTime
, 혹은 ZonedDateTime
을 전부 다루기때문에 safeGetIsoDateTimeWithoutT
에서 Temporal
을 받고 싶다면 공통 유틸인 getIsoDateTimeWithoutT
에 이런 로직을 추가할 수도 있다.