Daily coding
Java Basic : day 13 - Calendar 캘린더 클래스 본문
Calendar
: 연도, 월, 일 등의 날짜 정보를 얻어올 수 있음
- Date : 시간도 불러올 수 있음
- 일정 관리 : 예약 서비스 등에 많이 사용됨
// 사용방법 1
Calendar cal= new GregorianCalendar();
// 사용방법 2
Calendar cal2= Calendar.getInstance();
날짜 : get
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) +1; // 0 ~ 11로 구성됨(0:1월),데이터 넣을때는 실제 (월-1)해준 값 넣기
int day = cal.get(Calendar.DATE);
System.out.println(year + "년 " + month + "월 " + day+"일" );
// 2019년 12월 4일
날짜 : set
cal.set(Calendar.YEAR, 2019);
cal.set(Calendar.MONTH, Calendar.DECEMBER);
cal.set(Calendar.DATE, 25);
year = cal.get(Calendar.YEAR);
month = cal.get(Calendar.MONTH)+1;
day = cal.get(Calendar.DATE);
System.out.println(year + "년 " + month + "월 " + day+"일" );
// 2019년 12월 25일
오전(0) / 오후(1) : AM_PM
String ampm = cal.get(Calendar.AM_PM)== 0 ? "오전" : "오후";
System.out.println(ampm); // 결과: 오전
요일 : DAY_OF_WEEK (int, 1 ~ 7)
int weekday = cal.get(Calendar.DAY_OF_WEEK); // 1~7 까지 (1:일요일)
System.out.println(weekday);
// 수요일 = 4 출력
switch (weekday) {
case 4:
System.out.println("오늘은 수요일입니다.");
break;
}
날짜 바꾸기
cal.set(Calendar.YEAR,2020);
cal.set(Calendar.MONTH,5-1);
year = cal.get(Calendar.YEAR);
month = cal.get(Calendar.MONTH) +1;
System.out.println(year + "년 " + month + "월 ");
지정한 달의 마지막 날짜를 구하기 28 29 30 31 중 1
cal.set(Calendar.MONTH,3-1
); // 3월의 마지막 날
month = cal.get(Calendar.MONTH)+1;
int lastday = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(month+"월의 마지막 날: " + lastday + "일");
// 3월의 마지막 날: 31일
* getActualMaximum(): ()안의 날짜의 마지막 수를 구한다
(MONTH이면 11, DAY이면 31, DAY_OF_YEAR이면 365 등등)
lastday = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
cal.set(Calendar.DATE, lastday);
System.out.println("lastday = " + lastday+ "일까지 입니다.");
달력
// 연월일을 설정하고 달력의 빈칸을 구한다.
// 설정 : 2020년 2월
* 달력 위쪽 빈칸
cal.set(Calendar.YEAR, 2020);
cal.set(Calendar.MONTH, 2-1);
cal.set(Calendar.DATE, 1);
year = cal.get(Calendar.YEAR);
month = cal.get(Calendar.MONTH)+1;
weekday = cal.get(Calendar.DAY_OF_WEEK); // 이미 설정된 날짜(2020.02.01)의 요일을 구한다
// 빈칸 구하기
int numberOfBlank = (weekday - 1) % 7;
// 요일 -1 을 한 뒤 7로 나눈 나머지로 계산하면 빈칸의 수가 나온다
System.out.println(year + "년 " + month + "월의 위 쪽 빈칸은 " + numberOfBlank+ "칸 입니다.");
* 요일
weekday = cal.get(Calendar.DAY_OF_WEEK);
* 맨 밑의 빈칸수
int numberOfBlankLast = 7 - 마지막날의 요일;
System.out.println("밑의 빈칸은 + lastday2 :" + numberOfBlankLast);
// 예제 :
// 달력 출력하기
// 날짜 : 2020.12
year = 2020;
month = 12;
cal.set(Calendar.YEAR, 2019);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DATE, 1);
int _startDay = cal.get(Calendar.DAY_OF_WEEK); // 요일을 숫자로 표현한 것
int _lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); // 마지막 날짜: 31
int _date = 1; // 출력하려는 날짜 (1~31까지)를 담는 변수
System.out.println(year+ "년 "+month+"월 ");
System.out.println("===================================================");
String week_day = "일월화수목금토";
for (int i = 0; i <week_day.length(); i++) {
char c = week_day.charAt(i);
System.out.print(c + "\t");
}System.out.println();
System.out.println("===================================================");
윗쪽 빈칸
for (int i = 1; i <_startDay ; i++) { // _startDay : 요일임
System.out.print(" \t");
}
날짜
for (int i = 0; i < _lastDay; i++) {
System.out.print(_date+"\t");
// 일주일 단위로 line 끊기
// 현재 날짜 + 요일 - 1
if(( _date + _startDay - 1 ) % 7 == 0 ) {
}
_date++;
}
밑쪽 빈칸
for (int i = 0; i < (7 - ( _lastDay + _startDay -1 ) % 7) ; i++) {
System.out.print("*\t");
}
System.out.println();
}
}
'Language > Java_basic' 카테고리의 다른 글
Java Basic : day 13 - Observer Pattern 옵저버 패턴 (0) | 2019.12.04 |
---|---|
Java Basic : day 13 - Factory Pattern 팩토리패턴 (0) | 2019.12.04 |
Java Basic : day 12 - Example01: Baseball 선수정보 입력(HashMap, TreeMap사용) 버전 2 (0) | 2019.12.04 |
Java Basic : day 12 - Singleton 싱글턴 패턴 (0) | 2019.12.04 |
Java Basic : day 11 - Example01: Baseball 선수정보 입력(HashMap, TreeMap사용) (0) | 2019.12.02 |