1. Date 클래스
- 날짜 및 시각 관련 기능을 제공하는 클래스
- 대부분의 생성자 및 메서드가 deprecate 처리되어 있음 => 다양한 API들이 여전히 Date 타입을 사용하는 경우가 많음
- toString() 메서드가 오버라이딩 되어 있음 => 날짜 및 시각 정보를 쉽게 출력 가능
Date d1 = new Date();
System.out.println(d1); //toString() 메서드 생략
// 생성자에 long 타입 값을 전달 시 해당 값에 맞는 Date 객체 생성됨
Date d2 = new Date(2000000000000L); // 밀리초 단위 long 타입 값을 전달
// => 기준 시각으로부터 지정된 밀리초만큼 지난 시각으로 설정
System.out.println(d2);
Date 객체의 getTime() 메서드 호출하면 해당 객체의 날짜 정보가 long 타입으로 리턴됨 => 두 Date 객체의 getTime() 결과를 연산하면 두 날짜간의 차이 계산 가능 => 목표날짜 - 현재날짜 > 0 일경우 결과값은 남은 일 수(미래) 이며, => 목표날짜 - 현재날짜 < 0 일경우 결과값은 지난 일 수(과거) 이다.
long differentDate = d2.getTime() - d1.getTime();
System.out.println(differentDate); //long 타입 값(밀리초 단위) 출력
//=> 사용하기 편하도록 특정 단위로 변환 작업이 필요함
// ex) 밀리초 -> 초 -> 분 -> 시 -> 일
System.out.println(differentDate/1000/60/60/24+"일"); // 목표날짜에서 현재날짜까지 3493일
if(differentDate > 0) {
System.out.println(differentDate/1000/60/60/24+"일 남았습니다.");
} else if(differentDate < 0) {
System.out.println(differentDate/1000/60/60/24+"일 지났습니다.");
} else {
System.out.println("오늘입니다.");
}
✔️결과 : 3493일 남았습니다.
2. Calendar 클래스
- 주로 날짜 및 시각을 조작하는 용도의 클래스(표현도 가능)
- 추상클래스이므로 인스턴스 생성없이 제공되는 인스턴스를 static 메서드인 getInstance() 메서드로 리턴받아 사용
- get() 메서드로 날짜 및 시각 정보를 조회하고, set() 메서드로 날짜 및 시각 정보를 설정(조작)함 => 파라미터로 날짜 및 시각 모두 설정을 위한 상수 사용
Calendar cal = Calendar.getInstance();
// 현재 시스템 날짜 및 시각 정보 리턴
System.out.println(cal);
➡️ toString() 메서드가 오버라이딩 되어있으나 식별 어려움
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH)+1; //0~11까지 사용하르모 +1 필요
int day = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "년"+month + "월"+day+"일");
✔️결과 : 2023년 10월 25일
int hour = cal.get(Calendar.HOUR_OF_DAY); //24시간제(hour : 12시간제)
int min = cal.get(Calendar.MINUTE);
int sec = cal.get(Calendar.SECOND);
System.out.println(hour + "시 "+min + "분 "+sec+"초");
✔️결과 :9시 52분 56초
Calendar <-> Date 상호 변환
1. Calendar -> Date로 변환시
Calendar 객체의 getTime() 메서드를 호출하여 Date 타입 리턴
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
System.out.println(date);
결과 : Wed Oct 25 09:56:19 KST 2023
2. Date -> Calendar로 변환시
Calendar 객체가 존재하는 상태에서 setTime() 메서드 호출하여 Date 타입 객체를 파라미터로 전달
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date);
System.out.println(cal2.getTime());
결과 : Wed Oct 25 09:56:19 KST 2023
각 항목을 별도로 변경할 때는 set(int field, int value) 메서드 사용
➡️field 항목은 get() 메서드와 마찬가지로 calendar.XXX 상수 사용
cal2.set(Calendar.YEAR, 2010); //2010년으로 설정
cal2.set(Calendar.MONTH, 5-1); //5월로 설정(-1)
Date date2 = cal2.getTime();
System.out.println(date2);
결과 : Mon May 31 10:16:33 KST 2010
'JAVA' 카테고리의 다른 글
[JAVA] 날짜 및 시각 정보에 대한 형식화(Formatting) (0) | 2023.10.25 |
---|---|
[JAVA] java.time 패키지 (0) | 2023.10.25 |
[JAVA] Math.random() 메서드 활용 100% (1) | 2023.10.24 |
[JAVA] java.lang.Math 클래스 (0) | 2023.10.24 |
[JAVA] 패스워드 복잡도 검사 코드짜기 (0) | 2023.10.24 |