자바 8 이전에는 SimpleDateFormat이 thread-safe가 아니기 때문에 ThreadLocal로 사용하였다.
자바 8에서는 DateTimeFormatter가 thread-safe이기 때문에 다음과 같이 사용할 수 있다.
public class DateUtils {
private static final DateTimeFormatter DEFAULT_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
public static String format(Date date) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
return localDateTime.format(DEFAULT_FORMATTER);
}
}
다음은 테스트 코드이다.
public class DateUtilsTest {
@Test
public void format() {
Date date = new Date();
String formatted = DateUtils.format(date);
System.out.println(formatted);
}
}
기존 Date 타입의 포맷팅은 새로운 타입으로의 변환이 필요하기 때문에 다소 복잡해보일 수 있다.
Reference:
http://stackoverflow.com/questions/25561377/format-localdatetime-with-timezone-in-java8
댓글을 달아 주세요