나의 IT일지
Calendar클래스, Date클래스 본문
자바는 프로젝트안에 패키지를 만들고 패키지 안에 클래스를 만들며, 클래스에 메서드와 필드를 구현한다. 즉, 패키지는 클래스를 모아놓은 것이며, import를 통해 호출해서 해당 패키지의 클래스를 사용한다.
그중에, java.util 패키지는 프로그램 개발에서 자주 사용하는 API이기에, 사용자의 편리성을 위해 구현된 클래스들이 모여있어서 자주 사용한다.
클래스 | 용도 |
Calendar | 현 시점이나 특정 시점의 날짜와 시간 정보 저장 |
Date | 현 시점의 날짜와 시간 정보를 저장 |
Scanner | 문자 데이터를 입력 |
BigDecimal | 정확한 소수점 연산 |
StringTokenizer | 문자열을 구분 문자열 기준으로 분리 |
java.util.Date
자바에서 1970.01.01을 기준으로 현재까지 시간을 System클래스의 currentTimeMills( )메서드를 통해 long 타입으로 반환할 수 있다. 하지만 "System.currentTimeMills( )"메서드는 1/1000초 단위로 환산하기에, 프로그램의 소요시간을 측정할 때 사용하며, 정확한 날짜나 시간을 확인할 수 없다.
package pack0519;
public class Code1 {
public static void main(String[] args) {
long start = System.currentTimeMillis();
System.out.println("시작시간 : "+start);
for(int i=1; i< 10000000;i++) {
i++;
}
long end=System.currentTimeMillis();
System.out.println("종료시간 : "+end);
System.out.println("걸린시간 : " + (end-start));
}
}
"System.currentTimeMills( )"메서드는 1970.1.1에서 부터 현재까지의 시간을 초로 환산해서 출력하기에, 정확한 날짜와 시간을 시각적으로 사용하기 부족하다. 그래서 사용하는 Date클래스를 사용해서 현 시점의 날짜나 시간을 출력하게 된다.
Date클래스는 날짜를 표현하는 클래스로, 객체 간에 날짜 정보를 주고 받을 때 매개변수나 리턴타입으로 사용한다. 이때 Date 객체는 영문으로 된 날짜를 리턴한다.
package pack0519;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Code4 {
public static void main(String[] args) {
Date day = new Date();
System.out.println(day);
}
}
java.util.Calendar
Date클래스는 생성자의 매개변수에 따라 날짜의 정보를 지정할 수 있다. 하지만 날짜나 시간을 한번에 출력을 하며, 해당 출력 값의 타입은 문자열이다.
그래서 정수 형태로 날짜, 시간의 정보를 출력하는 Calendar 클래스가 필요하다. Calendar클래스는 달력을 표현한 클래스로, 추상클래스여서 new연산자를 통해 직접 인스턴스 생성 불가하다. 그래서 getInstance()메서드를 통해 현 시간대를 기준으로 한 객체 생성을 하게 된다.
- get(필드) : 해당 필드의 값을 호출
- getActualMaximum(필드) : 해당 필드의 최대값 호출
필드 | 내용 |
Calendar.YEAR | 연도 |
Calendar.MONTH
|
월 (1월을 0으로 출력) |
Calendar.DATE
|
일 |
Calendar.HOUR
|
시 |
Calendar.MINUTE
|
분 |
Calendar.SECOND
|
초 |
Calendar.DAY_OF_WEEK
|
이번 주 일요일을 기준으로 지난 일 수 |
Calendar.DAY_OF_YEAR
|
올해 1월 1일을 기준으로 지난 일 수 |
Calendar.DAY_OF_MONTH
|
이번 달 1일을 기준으로 지난 일 수 |
package pack0519;
import java.util.Calendar;
public class Code2 {
public static void main(String[] args) {
Calendar a = Calendar.getInstance();
System.out.println(a.get(Calendar.YEAR));
System.out.println(a.get(Calendar.MONTH)+1);
System.out.println(a.get(Calendar.DATE));
System.out.println(a.get(Calendar.DAY_OF_WEEK));
System.out.println(a.get(Calendar.DAY_OF_YEAR));
System.out.println(a.getActualMaximum(Calendar.DATE));
}
}
'프로그래밍 언어 > Java' 카테고리의 다른 글
Scanner 클래스 (0) | 2023.05.22 |
---|---|
LocalDateTime 클래스 (0) | 2023.05.19 |
StringTokenizer클래스, Random클래스 (0) | 2023.05.17 |
Wrapper클래스 (0) | 2023.05.16 |
String클래스, StringBuffer클래스 (0) | 2023.05.12 |