Java에서 특정 날짜를 전달하여 요일을 결정하는 방법은 무엇입니까?

1. 개요

이 짧은 자습서에서는 요일을 숫자로, Java 날짜에서 텍스트로 추출하는 방법을 알아 봅니다.

2. 문제

비즈니스 로직에는 종종 요일이 필요합니다. 왜? 첫째, 근무 시간과 서비스 수준은 근무일과 주말에 따라 다릅니다. 따라서 많은 시스템에서 하루를 숫자로 표시해야합니다. 그러나 우리는 또한 표시 할 텍스트로 그 날이 필요할 수 있습니다.

그렇다면 Java의 날짜에서 요일을 어떻게 추출합니까?

3. java.util.Date 솔루션

java.util.Date 는 Java 1.0부터 Java 날짜 클래스였습니다. Java 버전 7 이하로 시작된 코드는이 클래스를 사용합니다.

3.1. 숫자로 표시된 요일

먼저 java.util.Calendar를 사용하여 날짜를 숫자로 추출합니다 .

public static int getDayNumberOld(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); return cal.get(Calendar.DAY_OF_WEEK); }

결과 숫자의 범위는 1 (일요일)에서 7 (토요일) 입니다. Calendar 는 이에 대한 상수를 정의합니다. Calendar.SUNDAYCalendar.SATURDAY .

3.2. 텍스트로 요일

이제 하루를 텍스트로 추출합니다 . 언어를 결정하기 위해 로케일 을 전달 합니다.

public static String getDayStringOld(Date date, Locale locale) { DateFormat formatter = new SimpleDateFormat("EEEE", locale); return formatter.format(date); }

이렇게 하면 영어의 "Monday"또는 독일어의 "Montag"와 같이 귀하의 언어로 하루 종일반환 됩니다.

4. java.time.LocalDate 솔루션

Java 8은 날짜 및 시간 처리를 점검하고 날짜에 대한 java.time.LocalDate 를 도입 했습니다 . 따라서 Java 버전 8 이상에서만 실행되는 Java 프로젝트는이 클래스를 사용해야합니다!

4.1. 숫자로 표시된 요일

이제 날짜를 숫자로 추출하는 것은 간단합니다 .

public static int getDayNumberNew(LocalDate date) { DayOfWeek day = date.getDayOfWeek(); return day.getValue(); }

결과 숫자는 여전히 1에서 7까지입니다. 그러나 이번에는 월요일이 1이고 일요일이 7입니다 ! 요일 자체가 열거 - 된 요일 . 예상대로 열거 형 값은 MONDAYSUNDAY 입니다.

4.2. 텍스트로 요일

이제 하루를 다시 텍스트로 추출합니다. 또한 Locale을 전달합니다 .

public static String getDayStringNew(LocalDate date, Locale locale) { DayOfWeek day = date.getDayOfWeek(); return day.getDisplayName(TextStyle.FULL, locale); }

java.util.Date 와 마찬가지로 선택한 언어로 하루를 반환합니다.

5. 결론

이 기사에서는 Java 날짜에서 요일을 추출했습니다. java.util.Datejava.time.LocalDate를 사용하여 숫자와 텍스트를 모두 반환하는 방법을 보았습니다 .

항상 그렇듯이 코드는 GitHub에서 사용할 수 있습니다.