일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 이탈리아
- 이클립스
- list
- vscode
- input
- json
- 테이블
- html
- Button
- Maven
- CMD
- date
- 배열
- Files
- Eclipse
- string
- 문자열
- Java
- javascript
- ArrayList
- table
- Visual Studio Code
- windows
- 자바스크립트
- Array
- IntelliJ
- js
- CSS
- 자바
- 인텔리제이
- 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 |