자바의 날짜/시간 자료형
자바의 날짜 시간을 쓸 수 있는 방법은 총 3가지이다
1.Date 클래스
2. Calendar 클래스
3. time 패키지
여기서 time 패키지의 경우 JDK 8부터 사용이 가능하므로 구형 버전을 쓰는 회사나 개인의 경우 사용 할 수 없으며
1번 방법의 경우 기능이 너무 없어 잘 안 사용하기에..
2번 방법을 사용하는 경우가 꽤 있습니다.
Calendar 클래스 문법
우선 import 가 필요합니다
import java.util.Calendar;
그리고 객체 선언 (new)은 필요하지 않습니다.
예시 ) 현재 데이터 받기
Calendar c1 = Calendar.getInstance();
System.out.println(c1);
System.out.println();
java.util.GregorianCalendar[time=1705776588571,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,useDaylight=false,transitions=30,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2024,MONTH=0,WEEK_OF_YEAR=4,WEEK_OF_MONTH=4,DAY_OF_MONTH=21,DAY_OF_YEAR=21,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=3,AM_PM=0,HOUR=3,HOUR_OF_DAY=3,MINUTE=49,SECOND=48,MILLISECOND=571,ZONE_OFFSET=32400000,DST_OFFSET=0]
출력 결과를 보면 뭐라뭐라 쭉 나열이 되어 있는데 현재 데이터에 대한 값들을 의미하며 여기서 본인이 필요한 데이터만 뽑아서 정리를 하여 사용하면 됩니다 .
System.out.println(c1.get(Calendar.YEAR)); // 2024년
System.out.println(c1.get(Calendar.MONTH) + 1); // 0 > 월(0~11) + 추가로 1 더함
System.out.println(c1.get(Calendar.DATE));// 5 > 일
System.out.println(c1.get(Calendar.HOUR)); // 11 > 시
System.out.println(c1.get(Calendar.HOUR_OF_DAY)); // 11 > 시(24H 표기법)
System.out.println(c1.get(Calendar.MINUTE)); // 9 > 분
System.out.println(c1.get(Calendar.SECOND)); // 35 > 초
System.out.println(c1.get(Calendar.MILLISECOND)); // 0.506 > 밀리초
System.out.println(c1.get(Calendar.AM_PM));// 0/1 > 오전/오후
System.out.println(c1.get(Calendar.DAY_OF_YEAR)); // 5 > 올해 5번째 날
System.out.println(c1.get(Calendar.DAY_OF_MONTH)); // 5 > 이번달 5번째 날
// 일요일이 1, 토요일이 7로 설정이 되어있음.
// 주차는 목요일을 포함하는 것을 기준으로 함
System.out.println(c1.get(Calendar.DAY_OF_WEEK)); // 6 > 이번주 6번째 날 (요일)
System.out.println(c1.get(Calendar.WEEK_OF_YEAR)); // 1 >올해 1번째 주
System.out.println(c1.get(Calendar.WEEK_OF_MONTH)); // 1 > 이번달 1번째 주
년
월
일
시(12시간표기법)
시(24시간표기법)
분
초
초에 대한 0이하의 숫자 (밀리초)
오전 오후 (0 이면 오전 1이면 오후)
날짜 (올해 n번째 날 , 2월일 경우 1월의 날짜 + 2월 현재의 날짜 값)
날짜(이번달 n번째 날 )
요일 (이번주 기준 n번째 날 (일요일을 1 , 토요일을 7로 계산함))
년 기준 주차 (1주차 2주차 3주차 4주차, 2월로 가면 5주차 6주차 .... 출력)
달 기준 주차 (1,2,3,4,5주차)
이렇게 본인이 원하는 데이터를 Calendar.원하는 항목을 선택하여 가져올 수 있습니다.
예시) 오늘 날짜 출력
System.out.printf("오늘은 %d년 %d월 %d일입니다.\n", c1.get(Calendar.YEAR), (c1.get(Calendar.MONTH) + 1),c1.get(Calendar.DATE));
Calendar에서 MONTH는 0~ 11로 나오기 때문에 +1을 해야 일반적인 달력의 숫자 1~12가 나옵니다
get을 통해 현재 년도,월,일을 읽어 출력하였습니다.
예시) 현재 시각 출력
System.out.printf("지금은 %s %02d시 %02d분 %02d초 입니다.\n", c1.get(Calendar.AM_PM) == 0 ? "오전" : "오후",
c1.get(Calendar.HOUR), c1.get(Calendar.MINUTE), c1.get(Calendar.SECOND));
마찬가지로 현재 시각을 출력 할 수 있습니다.
get, set, add
Calendar를 쓰면 get과 set을 많이 쓰는데
get은 읽기 즉 지금의 시간을 가져올 때
set은 쓰기 즉 내가 원하는 시간
예시
Calendar christmas = Calendar.getInstance(); // 현재 시각
System.out.printf("%tF\n",christmas);
christmas.set(2024, 11, 25, 18, 30, 0);
System.out.printf("%tF %tT\n",christmas,christmas);
set으로 년 월 일 시 분 초 모두 줄 수 있습니다.
또 값을 더하거나 뺄 수도 있습니다 .
예시
Calendar now = Calendar.getInstance();
System.out.printf("1일차 :%tF\n ", now ); //오늘 출력
now.add(Calendar.DATE, 99); // (기존 값 , 더할 값)
System.out.printf("100일 :%tF\n", now);
// 1주일 전
now = Calendar.getInstance();
now.add(Calendar.DATE, -7);
System.out.printf("일주일전: %tF\n", now);
//컵라면 > 3분 뒤
now = Calendar.getInstance();
now.add(Calendar.MINUTE, 3);
System.out.printf("3분 뒤 : %tT\n", now);
'java' 카테고리의 다른 글
자바의 switch문 (0) | 2024.01.21 |
---|---|
자바의 if(조건문) (0) | 2024.01.21 |
재귀 메서드 (Recursive Method) (0) | 2024.01.21 |
메서드 오버로딩(Method Overloading) (2) | 2024.01.21 |
자바의 메서드(Method) (0) | 2024.01.21 |