DateTimeFormatter VS SimpleDateFormat
Java 8 버전에서 날짜와 관련된 많은 클래스가 개선되었다. 그 중에 하나가 Local~ 시리즈인데, 이와 함께 기존 SimpleDateFormat 클래스의 개선된 버전인 DateTimeFormatter가 소개되었다.
- 스레드 안전성: DateTimeFormatter는 스레드 안전하므로, 여러 스레드가 동일한 인스턴스를 문제없이 사용할 수 있다. 반면에, SimpleDateFormat은 스레드 안전하지 않다.
- 불변성: DateTimeFormatter는 불변객체로서, 한 번 인스턴스를 생성하면 그 속성을 변경할 수 없다.
- 유연성 및 오류 처리: DateTimeFormatter는 SimpleDateFormat보다 포맷팅 옵션 측면에서 더 다양한 함수를 제공하여 유연성을 높였다. 예를 들어, ISO 날짜-시간 포맷을 포함한 더 넓은 범위의 날짜 및 시간 형식을 처리할 수 있으며, 지역화된 날짜 및 시간 패턴과 같은 더 많은 포맷팅 및 파싱 옵션을 지원한다.
예제코드
1. Thread-safe example
@Test
public void testDateTimeFormatterThreadSafety() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
Runnable task = () -> {
LocalDateTime parsedDate = LocalDateTime.parse("2023-12-01 12:00:00", formatter);
assertEquals("2023-12-01 12:00:00", formatter.format(parsedDate));
};
Thread thread1 = new Thread(task);
Thread thread2 = new Thread(task);
thread1.start();
thread2.start();
}
2. Flexibility
@Test
public void testDateTimeFormatterFlexibility() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateString = "2023-12-01 12:00:00";
LocalDateTime date = LocalDateTime.parse(dateString, formatter);
assertEquals(2023, date.getYear());
assertEquals(12, date.getMonthValue());
assertEquals(1, date.getDayOfMonth());
}
반응형
'Web Programming' 카테고리의 다른 글
Java SSL 인증 무시하기(PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException) (0) | 2023.10.11 |
---|---|
JBoss EAP7, Wildfly JNDI 설정방법(with Spring JNDI 설정) (0) | 2023.07.25 |
Curl 자주 사용하는 커맨드 예제 및 옵션( Json payload, POST, GET 등 ) (0) | 2023.02.08 |
RESTFul API 패키지 구조 설계안 ( 버전 우선, 도메인 우선 등 방식 비교 ) (0) | 2023.01.30 |
Java 17 주요 특징 with 예제 샘플 코드 (2) | 2023.01.29 |