JAVA의 Calendar 객체를 사용해 날짜, 요일, 시간 등을 추출할 수 있습니다.
날짜
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR); //년
int month = cal.get(Calendar.MONTH); //월(0부터 시작함, 0~11)
int date = cal.get(Calendar.DATE); //일
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); //요일
//해당 연도의 첫날(1월 1일) ~ 현재일까지의 일수
int dayOfYear = cal.get(Calendar.DAY_OF_YEAR)
//해당월의 첫날(1일) ~ 현재일까지의 일수
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH)
//현재요일에 대해 해당 월의 첫 번째 요일 ~ 현재 요일의 수
int dayOfWeekInMonth = cal.get(Calendar.DAY_OF_WEEK_IN_MONTH)
//올해의 현재주차
int weekOfYear = cal.get(Calendar.WEEK_OF_YEAR)
//이번달의 현재주차
int weekOfMonth = cal.get(Calendar.WEEK_OF_MONTH)
위와 같이 년, 월, 일, 요일을 구할 수 있습니다.
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
String dayOfWeekStr = "";
switch (dayOfWeek) {
case 1:
dayOfWeekStr = "월요일";
break;
case 2:
dayOfWeekStr = "화요일";
break;
case 3:
dayOfWeekStr = "수요일";
break;
case 4:
dayOfWeekStr = "목요일";
break;
case 5:
dayOfWeekStr = "금요일";
break;
case 6:
dayOfWeekStr = "토요일";
break;
case 7:
dayOfWeekStr = "일요일";
break;
}
요일은 숫자(int) 형식으로 추출되는데 위와 같이 각각의 요일값을 대입시켜 편하게 사용할 수 있습니다.
시간
Calendar cal = Calendar.getInstance();
int hour = cal.get(Calendar.HOUR); //시간(12시간 기준, 0~11로 표기)
int hourOfDay = cal.get(Calendar.HOUR_OF_DAY); //시간(24시간 기준, 0~23으로 표기)
int minute = cal.get(Calendar.MINUTE); //분
int second = cal.get(Calendar.SECOND); //초
int millisecond = cal.get(Calendar.MILLISECOND); //1/1000초
int amPm = cal.get(Calendar.AM_PM); //오전(0)/오후(1)
위와 같이 Calendar 객체를 이용해 시간 관련 데이터를 추출할 수 있습니다.
아래와 같이 특정 시간을 지정하여 사용할 수 있습니다.
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy년 MM월 dd일 E요일 aa HH시 mm분 ss초");
cal.set(2023, 5, 23) //2023년 5월 23일 설정
cal.set(Calendar.YEAR, 2023) //2023년 설정
cal.set(Calendar.MONTH, 4) //5월 설정
cal.set(Calendar.DATE, 23) //23일 설정
cal.set(Calendar.HOUR_OF_DAY, 17) //오후 5시로 설정
cal.set(Calendar.MINUTE, 24) //24분으로 설정
cal.set(Calendar.SECOND, 15) //15초로 설정
System.out.println("1 : " + sdf1.format(cal.getTime()));
//1 : 2023년 05월 023일 화요일 오후 17시 24분 15초
//날짜와 시간을 초기화(1970년 1월 1일 0시 0분 0초)
cal.clear()
System.out.println("2 : " + sdf1.format(cal.getTime()));
//2 : 1970년 1월 1일 0시 0분 0초
시간, 날짜 차이
long a = 0;
long b = 0;
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy년 MM월 dd일 E요일 aa HH시 mm분 ss초");
cal1.clear();
cal2.clear();
cal1.set(2000, 1, 1);
cal2.set(2000, 1, 3);
a = cal1.getTimeInMillis();
b = cal2.getTimeInMillis();
System.out.println("1: " + sdf1.format(cal1.getTime()));
System.out.println("2: " + sdf1.format(cal2.getTime()));
System.out.println("시간차이: " + (b-a)/(60*60*1000) + "시간");
System.out.println("일수차이: " + (b-a)/(60*60*1000*24) + "일");
/*
1: 2000년 02월 01일 화요일 오전 00시 00분 00초
2: 2000년 02월 03일 목요일 오전 00시 00분 00초
시간차이: 48시간
일수차이: 2일
*/
위와 같이 시간과 날짜 차이 또한 구할 수 있습니다.
반응형
'JAVA' 카테고리의 다른 글
[JAVA] try-with-resources 사용하기(try-catch-finally 와 비교) (2) | 2024.01.18 |
---|---|
[JAVA] 두 날짜 사이 값 구하기 (2) | 2023.11.27 |
[JAVA] UUID사용하여 고유한 값 만들기 (0) | 2022.12.08 |
[JAVA] split 메소드와 "|"으로 문자 자르기 (2) | 2022.12.06 |
[JAVA] 반복문의 제어(break, continue) (2) | 2022.11.04 |
댓글