Calendar 클래스는 시스템에서 날짜와 시간정보를 가져온다.
Calendar 클래스는 추상클래스이기 때문에 직접 인스턴스를 생성할 수는 없다. 대신 static 메소드를 사용하여 Calendar 클래스를 구현한 Calendar 형 인스턴스를 반환한다. TimeZone에 따라 시간 표기가 다른 국가가 있기 때문이다. 직접 인스턴스를 생성하지 않지만, getInstance()를 통해서 인스턴스를 받으면 시간에 대한 정보를 사용 할 수 있다.
Calendar now1 = Calendar.getInstance(); // Calendar 의 클래스 메소드 getInstance를 사용해서 인스턴스를 받음
Calendar 형 참조변수 now1로 아래 예제 처럼 사용할 수 있다.
now1.get(Calenedar.YEAR)
- 년도
now1.get((Calenedar.MONTH)+1)
- 월
now1.get(Calenedar.DAY_OF_MONTH)
- 일
다양한 Calendar 클래스 상수들이 정의되어 있다. javadoc에서 찾아보자. 년, 월, 일, 시, 분, 초 뿐 아니라 다양한 시간관련 정보를 사용할 수 있다.
Calendar 클래스는 20년 넘게 사용되고 있으니 여러가지를 시도해보자. JDK는 내용이 방대해서 하나하나 다 외울 수가 없다. 필요할 때 마다 찾아서 쓸 수 있는 센스와 응용력이 필요하다.
아래는 Swing GUI을 사용한 Calendar 예제다.
import java.awt.Font;
import java.util.Calendar;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class CalendarEX extends JFrame{
Font f1;
CalendarEX(){
f1 = new Font("배달의민족 도현",Font.PLAIN,20);
//JLabel1
Calendar now1 = Calendar.getInstance();
JLabel lb1 = new JLabel();
lb1.setBounds(100, 100, 300, 40);
lb1.setFont(f1);
String t1 ="오늘날짜: " + now1.get(Calendar.YEAR) + " 년 " +
(now1.get(Calendar.MONTH)+1) + " 월 " + now1.get(Calendar.DAY_OF_MONTH) + " 일";
lb1.setText(t1);
//JLable2
JLabel lb2 = new JLabel();
lb2.setBounds(100, 150, 300, 40);
lb2.setFont(f1);
String t2 ="지금시각 " + now1.get(Calendar.HOUR_OF_DAY) + "시 " + now1.get(Calendar.MINUTE) + "분 " +
now1.get(Calendar.SECOND) + "초 이다.";
lb2.setText(t2);
// JTextField
JTextField tf1 = new JTextField();
tf1.setBounds(100, 200, 300, 40);
tf1.setFont(f1);
String t3 = " 1년중에 " + now1.get(Calendar.DAY_OF_YEAR) + "일이 지났다";
tf1.setText(t3);
// JFrame
add(lb1);add(lb2);add(tf1);
setTitle("Calendar Example");
setSize(500,400);
setLayout(null);
setVisible(true);
}
public static void main(String[] args) {
new CalendarEX();
}
}
*자바8 캘린더 클래스
*스윙에 대한 포스트