Notice
반응형
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- txs
- npm
- input
- CSS
- BREW
- Eclipse
- php version
- script
- js
- 책추천
- IntelliJ
- 붙여넣기방지
- jsp
- googleCharts
- 병행프로세스와 상호배제
- SCIPRT
- SQL
- Oracle
- 응용SW
- java
- node
- createBro
- 이클립스
- 정처산기
- TSX
- html
- 이론
- 이미지용량제한
- googleChart
- react
Archives
- Today
- Total
개발하자
Calendar 클래스 본문
728x90
1. Calendar 클래스
- Calendar(캘린더) 클래스는 Date 클래스와 마찬가지로 날짜와 시간을 다룬다.
- 경우에 따라 Date 클래스와 Calendar 클래스를 상호 변환하는 상황이 있다.
- java.util 패키지에 포함 (java.util.Calender)
- 추상 클래스이기에 Calender.getInstance() 매소드를 이용하거나 Calendar 클래스를 상속 받는 GregorianCalendar 클래스를 이용하여 객체를 생성할 수 있다. (new 하여 객체 생성 불가능)
// 싱글톤 객체 생성
Calender cal = Calendar.getInstance();
2. 주요 상수
상수 | 설명 | 사용법 |
static int YEAR | 현재 년도 | Calendar.YEAR |
static int MONTH | 현재 월(1월:0) | Calendar.MONTH |
static int DATE | 현재 월의 날짜 | Calendar.DATE |
static int WEEK_OF_YEAR | 현재 년도의 몇째 주 | Calendar.WEEK_OF_YEAR |
static int WEEK_OF_MONTH | 현재 월읠 몇째 주 | Calendar.WEEK_OF_MONTH |
static int DAY_OF_YEAR | 현재 년도의 날짜 | Calendar.DAY_OF_YEAR |
static int DAY_OF_MONTH | 현재 월의 날짜 | Calendar.DAY_OF_MONTH |
static int DAY_OF_WEEK | 현재 요일 (일요일:1, 토요일:7) | Calendar.DAY_OF_WEEK |
static int HOUR | 현재 시간 (12시간제) | Calendar.HOUR |
static int HOUR_OF_DAY | 현재 시간 (24시간제) | Calendar.HOUR_OF_DAY |
static int MINUTE | 현재 분 | Calendar.MINUTE |
static int SECOND | 현재 초 | Calendar.SECOND |
4. 주요 매소드
매소드 | 설명 |
static Calendar getInstance() | 현재 날짜와 시간 정보를 가진 Calendar 객체 생성 |
boolean after(Object when) | 현재 날짜 이후면 true, 아니면 false를 반환 |
boolean befor(Object when) | 현재 날짜 이전이면 true, 아니면 false를 반환 |
boolean equals(Object obj) | 같은 날이면 true, 아니면 false |
in get(int field) | 현재 객체의 주어진 값의 필드에 해당하는 상수 값 반환 |
Date getTime() | 현재 객체를 Date 객체로 변환 |
long getTimeInMillis() | 객체의 시간을 1/1000초 단위로 변경하여 반환 |
void set(int field, int value) | 현재 객체의 특정 필드를 다른 값으로 설정 |
void set(int year, int month, int date) | 현재 객체의 년,월,일 값을 다른 값으로 설정 |
void set(int year, int month, int date, int hour, int minute, int second) | 현재 객체의 년,월,일,시,분,초 값을 다른 값으로 설정 |
void setTime(Date date) | date 객체의 날짜와 시간 정보를 현재 객체로 생성 |
void setTimeInMillis(long millis) | 현재 격체를 1/1000초 단위의 주어진 매개변수 시간으로 설정 |
int getActualMinimum(int field) | 현재 객체의 특정 필드의 최소 값을 반환 |
int getActualMaximum(int field) | 현재 객체의 특정 필드의 최대 값을 반환 |
3. 예시
1) 기본 예시
import java.util.Date;
Calendar cal = Calendar.getInstance(); // 객체 생성
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1; // 월은 0부터 시작 이므로 + 1
int day = cal.get(Calendar.DATE);
int weekOfYear = cal.get(Calendar.WEEK_OF_YEAR);
int weekOfMonth = cal.get(Calendar.WEEK_OF_MONTH);
int dayOfYear = cal.get(Calendar.DAY_OF_YEAR);
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); // 1:일요일 ~ 7:토요일
int hour = cal.get(Calendar.HOUR);
int hourOfDay = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
▷ 현재 월은 0부터 시작(1월 = 0 ~ 12월 = 11), +1 해주자
▷ 현재 요일은 일요일부터 1 ~ 토요일까지 7
결과▽
2) Date 클래스와 상호 변환
import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Date
SimpleDateFormat smdf = new SimpleDateFormat("yyyy-MM-dd");
// 오늘 날 +N일
Date nowDate = new Date(); // 현재 날짜,시간,요일 등 정보
Calendar calendar = Calendar.getInstance(); // 캘린더 현재의 달력 정보 GET
calendar.setTime(nowDate); // Date 객체를 사용하여 Calendar 객체의 시간을 현재 날짜와 시간으로 설정
calendar.add(Calendar.DATE, 8); // 현재 날짜 + 8
String newDate = smdf.format(calendar.getTime()); // 원하는 형식으로 포맷
오늘 날짜는 2023년 12월 05일 + 8 하면 2023년 12월 13일
예약 달력을 만들때 오늘 날짜 기준 몇일 후부터 예약 가능하게 할때 사용하기 좋을 것 같다.
3) 메소드 예시
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.set(2023, Calendar.JANUARY, 01); // Calendar.월 로 원하는 달로 설정 (set메소드)
boolean after = cal1.after(cal2); // 오늘이 2023.01.01 이후 인지 (afer메소드)
boolean before = cal1.before(cal2); // 오늘이 2023.01.01 이전 인지 (before 메소드)
boolean equ = cal1.equals(cal2); // 오늘이 2023.01.01와 같은지 (equals 메소드)
int week = cal1.get(Calendar.DAY_OF_WEEK); // 무슨요일인지 (get 메소드)
Date date = cal1.getTime(); // date 객체 (date 메소드)
long diff = (cal2.getTimeInMillis() - cal1.getTimeInMillis()) / 1000; // 몇초 지났는지(timeInMillis 메소드)
long diff2 = diff/(24*60*60); // 몇일 지났는지
결과▽
4) 날짜 활용 예제
import java.util.Calendar
import java.util.Date
Date dateCheck = new Date();
Calendar registerCal = Calendar.getInstance();
registerCal.set(Calendar.YEAR, 2023);
registerCal.set(Calendar.MONTH, 11);
registerCal.set(Calendar.DATE, 1);
registerCal.set(Calendar.HOUR_OF_DAY, 8);
registerCal.set(Calendar.MINUTE, 59);
registerCal.set(Calendar.SECOND, 59);
Calendar endCal = Calendar.getInstance();
endCal.set(Calendar.YEAR, 2023);
endCal.set(Calendar.MONTH, 11);
endCal.set(Calendar.DATE, 30);
endCal.set(Calendar.HOUR_OF_DAY, 18);
endCal.set(Calendar.MINUTE, 0);
endCal.set(Calendar.SECOND, 0);
if(dateCheck.after(registerCal.getTime()) && dateCheck.before(endCal.getTime())){
// 2023년11월1일 9시부터 2023년11월30일 6시까지 표시할 내용
}
원하는 기간동안 접수를 받는 등 구현해야 할 때 간단하게 쓰인다
공부하면서 유용했던 부분 메모겸 공유하고자 끄적입니다.
고쳐야하는 부분있다면 댓글 남겨주시면 수정하겠습니다.
행복한 하루 보내세요 (❁´◡`❁)
728x90
반응형
'TECH STACKS > JAVA' 카테고리의 다른 글
[JAVA] 자바 개발환경 구축 및 기본 문법 (0) | 2024.02.13 |
---|---|
[JAVA] NullPointerException 처리 (함수) (0) | 2023.12.11 |
[POI] 엑셀 다운로드(셀 스타일, 셀 병합) (6) | 2023.12.06 |