[Java][time] 날짜와 시간 : Calendar, Date
2022. 6. 16. 14:26ㆍJAVA/Language
1. Calendar와 Date
- java.util.Date 클래스 : 날짜와 시간을 다룰 목적으로 JDK 1.0부터 제공되어온 클래스 (deprecated)
- java.util.Calendar 클래스 : 날짜와 시간을 다룰 목적으로 JDK 1.1부터 제공되어온 클래스
Calendar 클래스의 객체 생성
Calendar는 추상 클래스이기 때문에 직접 객체를 생성할 수 없습니다. 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 합니다.
Calendar cal = Calendar.getInstance();
Date와 Calendar간의 변환
1. Calendar를 Date로 변환
Calendar cal = Calendar.getInstnace();
...
Date d = new Date(cal.getTimeInMillis()); // Date(long date)
2. Date를 Calendar로 변환
Date d = new Date();
...
Calendar cal = Calendar.getInstance();
cal.setTime(d);
2. Calendar 클래스 활용
import java.util.Calendar;
public class CalendarEx1 {
public static void main(String[] args) {
// 기본적으로 현재날짜와 시간으로 설정됨
Calendar today = Calendar.getInstance();
System.out.println("이 해의 년도 : " + today.get(Calendar.YEAR));
System.out.println("월(0~11, 0:1월) : " + today.get(Calendar.MONTH));
System.out.println("이 해의 몇 째 주 : " + today.get(Calendar.WEEK_OF_YEAR));
System.out.println("이 달의 몇 째 주 : " + today.get(Calendar.WEEK_OF_MONTH));
// Calendar.DATE와 Calendar.DAY_OF_MONTH는 같다.
System.out.println("이 달의 몇 일 : " + today.get(Calendar.DATE));
System.out.println("이 달의 몇 일 : " + today.get(Calendar.DAY_OF_MONTH));
System.out.println("이 해의 몇 일 : " + today.get(Calendar.DAY_OF_YEAR));
System.out.println("요일(1~7, 1:일요일) : " + today.get(Calendar.DAY_OF_WEEK));
System.out.println("이 달의 몇 째 요일 : " + today.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println("오전_오후(0:오전, 1:오후) : " + today.get(Calendar.AM_PM));
System.out.println("시간(0~11) : " + today.get(Calendar.HOUR));
System.out.println("시간(0~23) : " + today.get(Calendar.HOUR_OF_DAY));
System.out.println("분(0~59) : " + today.get(Calendar.MINUTE));
System.out.println("초(0~59) : " + today.get(Calendar.SECOND));
System.out.println("1000분의 1초(0~999) : " + today.get(Calendar.MILLISECOND));
// 천분의 1초를 시간으로 표시하기 위해 3600000으로 나눔 (1시간 = 60 * 60초)
// 3,600,000 (1시간 = 3600초 = 3600초 * 1000)
System.out.println("TimeZone(-12~+12) : " + (today.get(Calendar.ZONE_OFFSET) / (60*60*1000)));
System.out.println("이 달의 마지막 날 : " + today.getActualMaximum(Calendar.DATE));
}
}
실행결과
이 해의 년도 : 2022
월(0~11, 0:1월) : 5
이 해의 몇 째 주 : 25
이 달의 몇 째 주 : 3
이 달의 몇 일 : 16
이 달의 몇 일 : 16
이 해의 몇 일 : 167
요일(1~7, 1:일요일) : 5
이 달의 몇 째 요일 : 3
오전_오후(0:오전, 1:오후) : 1
시간(0~11) : 2
시간(0~23) : 14
분(0~59) : 23
초(0~59) : 34
1000분의 1초(0~999) : 15
TimeZone(-12~+12) : 9
이 달의 마지막 날 : 30
References
source code : https://github.com/yonghwankim-dev/java_study/tree/main/ch10/ex_01_calendar
[도서] Java의 정석, 남궁 성 지음
'JAVA > Language' 카테고리의 다른 글
[Java][time] LocalDate와 LocalTime 클래스 (0) | 2022.06.16 |
---|---|
[Java][time] 형식화 클래스 : DecimalFormat, SimpleDateFormat, ChoiceFormat, MessageFormat (0) | 2022.06.16 |
[Java] 8. 예외처리(exception handling) (0) | 2022.06.08 |
[Java] 7. 객체지향 프로그래밍 2 #8 내부 클래스(Inner Class) (0) | 2022.05.23 |
[Java] 7. 객체지향 프로그래밍 2 #7 인터페이스(interface) (0) | 2022.05.11 |