자바 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

Posted by izeye

댓글을 달아 주세요