====== Java DateFormat ======
* [[java:8:datetime|Java 8 Date & Time]]
===== SimpleDateFormat =====
* ''SimpleDateFormat''은 Thread Safe 하지 **않으므로** 요청마다 매번 새로운 객체를 생성해서 써야한다.
* commons-lang 의 ''FastDateFormat''은 Thread Safe하다.
* [[https://www.javacodegeeks.com/2010/07/java-best-practices-dateformat-in.html|Java Best Practices – DateFormat in a Multithreading Environment]] : ''SimpleDateFormat''을 ThreadLocal을 이용해서 사용하는 방법
===== Java 8 DateTimeFormatter =====
* [[https://www.baeldung.com/java-datetimeformatter|Guide to DateTimeFormatter | Baeldung]]
==== locale 명시 ====
* 시스템 Locale 을 따르지 않고 로케일을 명시하고자 한다면,
DateTimeFormatter.ofPattern("포맷 문자열").withLocale(Locale.KOREA);
==== 요일 포맷 ====
* ''eee'' 혹은 ''ccc'' : 지정된 로케일의 요일 출력. 한국은 "월", "화", ...
* ''e'' 혹은 ''c'' : 요일 숫자값 출력
* 날짜 객체의 ''displayName'' 출력
import java.time.*;
import java.time.format.*;
import java.util.*;
Month.FEBRUARY.getDisplayName(TextStyle.FULL, Locale.KOREAN); // 2월
Month.FEBRUARY.getDisplayName(TextStyle.NARROW, Locale.KOREAN); // 2월
Month.FEBRUARY.getDisplayName(TextStyle.SHORT, Locale.KOREAN); // 2월
DayOfWeek.SUNDAY.getDisplayName(TextStyle.FULL, Locale.KOREAN); // 일요일
DayOfWeek.SUNDAY.getDisplayName(TextStyle.SHORT, Locale.KOREAN); // 일
DayOfWeek.SUNDAY.getDisplayName(TextStyle.NARROW, Locale.KOREAN); // 일