본문 바로가기

Backend/JAVA

Java DateTimeFormatter을 사용하여 요일, 오전/오후 구하기 (+ 다른 나라 언어로 포맷팅 변경하는 방법)

안녕하세요! 이번 포스팅에는 자바의 LocalDateTime과 DateTimeFormatter을 사용해서 요일과 오전/오후를 구하는 방법을 알아보겠습니다.

종종 한글로 요일이나 오전/오후를 출력해야 할 때가 있는데, 생각처럼 잘되지 않아서 생각보다 엄청난 삽질을 한끝에 얻은 방법을 공유하려고 합니다!

현재 시간 구하기

LocalDateTime now = LocalDateTime.now();

포맷을 하기 위해 LocalDateTime의 now() 메소드를 사용해서 현재 시간을 구해줍니다.

출력을 해보면 잘 출력되는 것을 확인할 수 있습니다.

요일 구하기

제가 사용한 포맷팅 형식은 ~월 ~일 (요일)입니다.

now.format(DateTimeFormatter.ofPattern("MM월 dd일(E)"));

DateTimeFormatter

정말 많은 포맷팅 형식을 지원하는 DateTimeFormatter을 사용했습니다.

공식 문서에 더 자세한 설명이 나와있으니 참고해서 사용하면 될 것 같습니다!

여기서 요일은 E라고 나와있네요.

따로 한글 포맷을 지정하지 않아도 한글로 나옵니다. (한글로 나오지 않는다면 아래 방법에서 약어를 ko로 설정하시면 됩니다!)

만약 요일이 다른 나라 언어로 나오는걸 원하신다면 Locale을 사용하시면 됩니다.

Locale은 DateTimeFormatter에서 .withLocale을 지원해주기 때문에 쉽게 사용할 수 있습니다. Locale에 대한 자세한 설명은 공식문서를 참고하시면 될 것 같습니다.

now.format(DateTimeFormatter.ofPattern("MM월 dd일(E)").withLocale(Locale.forLanguageTag("ja"))) // 일본어

일본어

now.format(DateTimeFormatter.ofPattern("MM월 dd일(E)").withLocale(Locale.forLanguageTag("fr"))) // 프랑스어

프랑스어

이런 식으로 정말 간단하게 사용할 수 있습니다.

오전/오후 구하기

오전/오후 구하기도 요일과 같이 사용하면 됩니다.

제가 사용한 포맷팅 형식은 오전/오후 ~시 ~분입니다.

now.format(DateTimeFormatter.ofPattern("a HH시 mm분"))

오전/오후를 구분하는 포맷팅 글자는 a입니다.

이것도 마찬가지로 다른 언어를 사용하고 싶다면 Locale을 사용하면 됩니다. (한글로 나오지 않는다면 아래 방법에서 약어를 ko로 설정하시면 됩니다!)

now.format(DateTimeFormatter.ofPattern("a HH시 mm분").withLocale(Locale.forLanguageTag("ja"))) // 일본어

일본어

now.format(DateTimeFormatter.ofPattern("a HH시 mm분").withLocale(Locale.forLanguageTag("zh"))) // 중국어

중국어

이렇게 정말 간단하게 요일, 오전/오후 구하는 방법을 알아봤습니다.

감사합니다!

'Backend > JAVA' 카테고리의 다른 글

JUnit5의 기본적인 사용법들  (3) 2021.03.11
DIP(Dependency Inversion Principle)  (3) 2020.06.23
Java Arrays.asList()  (0) 2020.02.27
추상화(Abstract)  (0) 2019.02.27
다형성(Polymorphism)  (1) 2019.02.23