바로 전 포스팅에서 Calendar 객체를 이용하여 현재 날짜, 요일, 시간 정보를 가져 오는 방법에 대해 정리 했습니다.
이번에는 원하는 날짜 및 시간 정보 등을 입력 하고 이를 다시 사용 하는 방법에 대해 정리 하겠습니다.
String startDate = "20180505083000";
위와 같이 날짜 정보를 startDate 라는 변수에 String 형으로 입력 했습니다.
2018년 5월 5일 08시 30분 00초 를 정의 한 텍스트 입니다.
역시 Calender 객체를 이용하기 위해서는 Calendar.getInstance() 를 사용 합니다.
Calendar cal = Calendar.getInstance();
위와 같은 상태에서 cal 정보를 확인 하면 현재시간 정보가 나옵니다. (이전 포스팅 참조)
여기에 원하는 startDate 정보를 대입해 줍니다.
cal.set(Calendar.YEAR, Integer.parseInt(startDate.substring(0, 4)));
cal.set(Calendar.MONTH, Integer.parseInt(startDate.substring(4, 6)) - 1);
cal.set(Calendar.DATE, Integer.parseInt(startDate.substring(6, 8)));
cal.set(Calendar.HOUR, Integer.parseInt(startDate.substring(8, 10)));
cal.set(Calendar.MINUTE, Integer.parseInt(startDate.substring(10, 12)));
cal.set(Calendar.SECOND, Integer.parseInt(startDate.substring(12, 14)));
각각의 Calendar 객체 상수값에 대입하는데요. 여기서 한가지 주의 할 점은 Calendar.MONTH 에는 5 가 그대로 입력 되면 안된다는 것입니다. Calendar.MONTH 값이 5일 경우 이는 6월을 의미 하므로 -1 을 한 값을 입력해 주어야 합니다. (이전 포스팅 참조)
이제 cal 에는 현재 날짜 정보를 대신하여 2018년 5월 5일 08시 30분 00초 라는 정보가 셋팅 되었습니다.
확인은 아래와 같이 해보겠습니다.
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int date = cal.get(Calendar.DATE);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
int hour = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
String korDayOfWeek = "";
switch (dayOfWeek) {
case 1:
korDayOfWeek = "일";
break;
case 2:
korDayOfWeek = "월";
break;
case 3:
korDayOfWeek = "화";
break;
case 4:
korDayOfWeek = "수";
break;
case 5:
korDayOfWeek = "목";
break;
case 6:
korDayOfWeek = "금";
break;
case 7:
korDayOfWeek = "토";
break;
}
System.out.println(year+"."+month+"."+date+"("+korDayOfWeek+") "+hour+":"+minute+":"+second);
dayOfWeek 값을 별도 입력 하지 않아도 2018년 5월 5일 날짜 정보를 조회하여 요일 정보를 가져 옵니다.
위 코드를 실행 하면 아래와 같은 결과 값을 리턴합니다.
2018.5.5(토) 8:30:0
2018년 5월 5일이 토요일이네요 ^^
String startDate = "20180319083000";
날짜를 2018년 3월 19일로 설정해봤습니다.
위 코드를 그대로 실행 시키면 아래와 같은 결과 값을 리턴합니다.
2018.3.19(월) 8:30:0
2018년 3월 19일이 월요일이 맞습니다. 잘 동작하네요 ^^
이번 예제와 같이 날짜정보를 String 형으로 제공 하는 경우는 보통 API 호출 또는 전문 호출등을 통해 특정 날짜 정보를 가져 올 경우 형식은 정해져 있으나 (ex. yyyyMMddHHmmss) 어떤 값이 올지 모를 경우에 많이 사용합니다.
만약 정확한 날짜 정보를 알고 있다면 아래와 같이 직접 입력 하는 방법도 사용 가능합니다.
cal.set(Calendar.YEAR, 2018);
cal.set(Calendar.MONTH, Calendar.MAY);
cal.set(Calendar.DATE, 5);
cal.set(Calendar.HOUR, 8);
cal.set(Calendar.MINUTE, 30);
cal.set(Calendar.SECOND, 0);
처음 방식과 다르게 Calendar.MONTH 에 Calendar.MAY 라는 값을 셋팅 했습니다. 5월이라는 상수 값을 그대로 입력 했으므로 처음과 달리 -1 을 하거나 할 필요가 없습니다.
물론 결과는 위와 동일 합니다 :)
▼ 도움이 되셨다면 로그인이 필요 없는 ▼
▼ 하트 클릭 한번 부탁 드립니다 ▼
감사합니다 :D
'Java' 카테고리의 다른 글
[ 자바 코딩 ] SimpleDateFormat 날짜 형식 지정하기 (4) | 2018.01.10 |
---|---|
[ 자바 코딩 ] GregorianCalendar 을 이용하여 원하는 날짜, 시간 정보 셋팅하기 (513) | 2018.01.08 |
[ 자바 코딩 ] 오늘 날짜, 요일, 시간 구하기 (Calendar 클래스) (4) | 2018.01.03 |
[ 자바 코딩 ] valueOf vs parseInt (9) | 2017.12.15 |
[ 자바 코딩 ] 자바 == vs equals (5) | 2017.12.04 |