본문 바로가기
JAVA

[JAVA] 날짜, 요일, 시간 구하기(Calendar)

by 무사뎀벨레 2023. 5. 23.

 

 

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일
*/

위와 같이 시간날짜 차이 또한 구할 수 있습니다.

반응형

댓글