일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 이탈리아
- list
- table
- json
- Array
- 자바
- date
- js
- CMD
- javascript
- 인텔리제이
- Maven
- ArrayList
- 테이블
- string
- 정규식
- 자바스크립트
- Visual Studio Code
- IntelliJ
- 이클립스
- html
- vscode
- CSS
- Java
- input
- windows
- 배열
- 문자열
- Eclipse
- Button
- Today
- Total
어제 오늘 내일
[Java] 특정 날짜의 요일 구하기 (숫자, 영문, 한글) 본문
- LocalDateTime / LocalDate (Java 8 이후)
- Date, Calendar (Java 8 이전)
1. LocalDateTime / LocalDate (Java 8 이후)
Java 8 이후에서는,
날짜를 표현하기 위해 java.time.LocalDateTime, java.time.LocalDate 클래스가 주로 사용됩니다.
이 클래스를 사용하여, 날짜를 표현한 후 요일을 구할 수 있습니다.
숫자로 구하기
import java.time.DayOfWeek; import java.time.LocalDate; public class GetDayOfWeek { public static void main(String[] args) { // 1. LocalDate 생성 LocalDate date = LocalDate.of(2021, 12, 25); // LocalDateTime date = LocalDateTime.of(2021, 12, 25, 1, 15, 20); System.out.println(date); // // 2021-12-25 // 2. DayOfWeek 객체 구하기 DayOfWeek dayOfWeek = date.getDayOfWeek(); // 3. 숫자 요일 구하기 int dayOfWeekNumber = dayOfWeek.getValue(); // 4. 숫자 요일 출력 System.out.println(dayOfWeekNumber); // 6 } }
LocalDate date = LocalDate.of(2021, 12, 25);
LocalDateTime date = LocalDateTime.of(2021, 12, 25, 1, 15, 20);
LocalDate 는 날짜를 나타내는 클래스이고, LocalDateTime은 날짜와 시간을 나타내는 클래스입니다.
이 예제에서는 2021년 12월 25일의 요일을 구합니다.
DayOfWeek dayOfWeek = date.getDayOfWeek();
요일을 표현하는 DayOfWeek Enum을 가져옵니다.
이제 이, DayOfWeek Enum 을 가지고, 요일을 구할 수 있습니다.
int dayOfWeekNumber = dayOfWeek.getValue();
2021년 12월 25일은 토요일입니다.
DayOfWeek의 getValue() 메소드를 이용하면 요일을 숫자로 가져올 수 있습니다.
월요일부터 일요일까지 1~7의 숫자로 표현됩니다.
즉, 월요일이 1, 일요일이 7입니다.
토요일이므로, 여기서는 6이 리턴되었습니다.
LocalDateTime date = LocalDateTime.of(2021, 12, 25, 1, 15, 20);
날짜와 시간을 표현하는 LocalDateTime 클래스에서도
LocalDate와 마찬가지로 getDayOfWeek() 메소드를 이용하여 DayOfWeek Enum을 구할 수 있고,
이 Enum 객체를 이용하여 요일을 구할 수 있습니다.
텍스트로 구하기 (영문, 한글)
import java.time.DayOfWeek; import java.time.LocalDate; import java.time.format.TextStyle; import java.util.Locale; public class GetDayOfWeek { public static void main(String[] args) { // 1. LocalDate 생성 LocalDate date = LocalDate.of(2021, 12, 25); System.out.println(date); // 2021-12-25 // 2. DayOfWeek 객체 구하기 DayOfWeek dayOfWeek = date.getDayOfWeek(); // 3. 텍스트 요일 구하기 (영문) System.out.println(dayOfWeek.getDisplayName(TextStyle.FULL, Locale.US)); // Saturday System.out.println(dayOfWeek.getDisplayName(TextStyle.NARROW, Locale.US)); // S System.out.println(dayOfWeek.getDisplayName(TextStyle.SHORT, Locale.US)); // Sat // 4. 텍스트 요일 구하기 (한글) System.out.println(dayOfWeek.getDisplayName(TextStyle.FULL, Locale.KOREAN)); // 토요일 System.out.println(dayOfWeek.getDisplayName(TextStyle.NARROW, Locale.KOREAN)); // 토 System.out.println(dayOfWeek.getDisplayName(TextStyle.SHORT, Locale.KOREAN)); // 토 // 5. 텍스트 요일 구하기 (default) System.out.println(dayOfWeek.getDisplayName(TextStyle.FULL, Locale.getDefault())); // 토요일 } }
LocalDate date = LocalDate.of(2021, 12, 25);
DayOfWeek dayOfWeek = date.getDayOfWeek();
앞의 예제와 마찬가지로
먼저 LocalDate 또는 LocalDateTime 객체로부터 DayOfWeek 객체를 얻어옵니다.
dayOfWeek.getDisplayName(TextStyle.FULL, Locale.US);
dayOfWeek.getDisplayName(TextStyle.NARROW, Locale.US);
dayOfWeek.getDisplayName(TextStyle.SHORT, Locale.US);
public String getDisplayName(TextStyle style, Locale locale)
DayOfWeek 클래스의 getDisplayName() 메소드는 요일을 텍스트로 리턴합니다.
TextStyle은 요일을 어떤 형식으로 보여줄지 결정합니다.
TextStyle.Full, TextStyle.NARROW, TextStyle.SHORT 이렇게 3개의 값을 사용할 수 있는데
TextStyle.Full은 요일의 전체 텍스트를,
TextStyle.NARROW, TextStyle.SHORT는 요일을 표현하는 단축형 표현을 나타냅니다.
각 TextStyle에 대한 정의는 Locale마다 다릅니다.
위 예제에서는 Locale을 US로 지정하여서
Saturday, S, Sat를 각각 리턴하였습니다.
여기서 주의할 것이 있는데,
Locale을 US로 설정하고, TextStyle.NARROW로 설정할 경우
Saturday와 Sunday 모두 'S'가 출력되어 구분이 되지 않을 수 있기 때문에
이것에 주의해야 합니다.
dayOfWeek.getDisplayName(TextStyle.FULL, Locale.KOREAN);
dayOfWeek.getDisplayName(TextStyle.NARROW, Locale.KOREAN);
dayOfWeek.getDisplayName(TextStyle.SHORT, Locale.KOREAN);
Locale를 KOREAN으로 설정하여,
요일의 한글명을 가져왔습니다.
dayOfWeek.getDisplayName(TextStyle.FULL, Locale.getDefault());
위와 같이 디폴트로 설정된 Locale을 지정할 수도 있습니다.
2. Date, Calendar (Java 8 이전)
Java 8 이전에는,
날짜를 표현하기 위해 java.util.Date 또는 java.util.Calendar 클래스를 사용할 수 있었습니다.
(하지만, Date 클래스는 현재 많은 메소드들이 deprecated 되었고,
사용을 권장하지 않습니다.)
숫자로 구하기
import java.util.Calendar; import java.util.Date; public class GetDayOfWeekForDate { public static void main(String[] args) { // 1. Date 생성 / 현재 날짜 Date currentDate = new Date(); System.out.println(currentDate); // Sat Jun 19 11:07:17 KST 2021 // 2. Calendar 생성 Calendar calendar = Calendar.getInstance(); calendar.setTime(currentDate); // 3. 텍스트 요일 구하기 (숫자) int dayOfWeekNumber = calendar.get(Calendar.DAY_OF_WEEK); // 4. 요일 출력 System.out.println(dayOfWeekNumber); // 7 } }
이번에는 현재 날짜를 가져와서 요일을 판단해 보았습니다.
현재 날짜는 '2021-06-19'로 토요일입니다.
int dayOfWeekNumber = calendar.get(Calendar.DAY_OF_WEEK);
Calendar의 get() 메소드에 필드값(DAY_OF_WEEK)를 전달하여
요일을 나타내는 숫자를 가져왔습니다.
이 때 리턴되는 숫자는 1~7로,
1은 일요일, 7은 토요일을 나타냅니다.
앞에서 소개한 DayOfWeek 객체를 사용해서 요일을 가져올 때는
1은 월요일, 7은 일요일입니다.
두 가지 방법으로 가져오는 숫자의 의미가 다르다는 것에 주의하세요.
텍스트로 구하기 ( 한글, 영문 )
import java.util.Calendar; import java.util.Date; import java.util.Locale; public class GetDayOfWeekForDate { public static void main(String[] args) { // 1. Date 생성 / 현재 날짜 Date currentDate = new Date(); System.out.println(currentDate); // Sat Jun 19 11:07:17 KST 2021 // 2. Calendar 생성 Calendar calendar = Calendar.getInstance(); calendar.setTime(currentDate); // 3. 텍스트 요일 구하기 (영문) System.out.println(calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US)); // Saturday System.out.println(calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.NARROW_FORMAT, Locale.US)); // S System.out.println(calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US)); // Sat // 4. 텍스트 요일 구하기 (한글) System.out.println(calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.KOREAN)); // 토요일 System.out.println(calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.NARROW_FORMAT, Locale.KOREAN)); // 토 System.out.println(calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.KOREAN)); // 토 // 5. 텍스트 요일 구하기 (default) System.out.println(calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault())); // 토요일 } }
현재 날짜를 가져와서, 요일을 판단하여 텍스트로 출력하는 예제입니다.
현재 날짜는 '2021-06-19'로 토요일입니다.
calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.NARROW_FORMAT, Locale.US);
calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US);
public String getDisplayName(int field, int style, Locale locale)
Calendar 클래스의 getDisplayName() 메소드는
파라미터로 전달받은 field의 값을 style과 locale을 적용하여
텍스트로 리턴합니다.
요일을 구하기 위해서 field에는 Calendar.DAY_OF_WEEK 상수를 전달합니다.
style 항목에는 Calendar의 상수 중 다음의 상수를 전달 할 수 있습니다.
- SHORT_FORMAT
- SHORT
- SHORT_STANDALONE
- LONG_FORMAT
- LONG
- LONG_STANDALONE
- NARROW_FORMAT
- NARROW_STANDALONE
calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.KOREAN);
calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.NARROW_FORMAT, Locale.KOREAN);
calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.KOREAN);
Locale을 KOREAN으로 전달하여
요일을 한글로 출력할 수 있습니다.
calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());
Locale을 default값으로 설정할 수 있습니다.
Java API를 이용해서 요일을 구하는 방법을 알아보았습니다.
'IT > Java' 카테고리의 다른 글
[Java] Date를 Calendar로, Calendar를 Date로 변환하기 (0) | 2021.06.20 |
---|---|
[Java] 날짜 비교하기 ( LocalDate, LocalDateTime, Date, Calendar) (0) | 2021.06.19 |
[Java] 문자열을 날짜로 변환하기 (Date, LocalDateTime) (1) | 2021.06.19 |
[Java] 두 개의 List를 비교하여, 서로 중복되는 값 찾기 (0) | 2021.06.18 |
[Java] 현재 날짜, 현재 시간 구하기 (1) | 2021.06.18 |