2009年6月9日火曜日

AWT 日付の演算

特定の要素の値を得る
 引数には取り出す要素を示すCalendarクラスのフィールドを指定する
 例えばCalendarから日を示す値を得たい場合は「get(Calendar.DATE)」とする

int 変数 = Calendar.get(フィールド);



特定の要素の値を変更する
 Calendarの特定要素の値を変更する
 引数には要素を示すCalendarクラスのフィールドと設定値を指定する方法と、年月日などの全て指定する方法がある
 例えば日の値を「10」に変更したい場合は「set(Calendar.DATE,10)」とし、年月日を「2001年12月24日」にしたい場合は「set(2001,12,24)」とする

Calendar.set = (フィールド,int値);
Calendar.set = (年,月,日);
Calendar.set = (年,月,日,時,分);
Calendar.set = (年,月,日,時,分,秒);


特定の要素の値を加算する
 特定の要素を加算する
 例えば「123日を加算する」には「add(Calendar.DATE,123)」とする

GregorianCalendar.add(フィールド,int値)


基準日時から経過時間を得る
 Javaの時間関係の基準となる1970年1月1日午前0時からの経過ミリ秒を得る

long 変数 = Calendar.getTimeInMillis();


例.2000年元旦からの経過日数と今日から1000日後の日付を計算しlabelに表示する

public class Calendar2App extends Frame{

public static void main(String[] args) {
new Calendar2App();
}

public Calendar2App(){
this.setSize(300,200);
Label l1 = new Label();
l1.setFont(new Font("Serif",Font.BOLD,14));
Label l2 = new Label();
l2.setFont(new Font("Serif",Font.BOLD,14));
Panel p1 = new Panel(new GridLayout(2,1));
p1.add(l1);
p1.add(l2);
this.add(p1,BorderLayout.CENTER);

//2000.1.1と今日のCalendarを用意する
Calendar c1 = new GregorianCalendar(2000,1,1);
Calendar c2 = new GregorianCalendar();
c2.set(c2.get(Calendar.YEAR),c2.get(Calendar.MONTH),c2.get(Calendar.DATE));

//差の計算
long num1 = c1.getTimeInMillis();
long num2 = c2.getTimeInMillis();
int n = (int)((num2-num1)/1000/60/60/24);

//今日から1000日後の計算
c1.add(Calendar.DATE,1000);
int y = c2.get(Calendar.YEAR);
int m = c2.get(Calendar.MONTH);
int d = c2.get(Calendar.DATE);
l1.setText("2000年元旦から今日までの日数:" + n);
l2.setText("今日から1000日後の日付:" + y + "/" + (m+1) + "/" + d);
this.setVisible(true);
}

}

0 件のコメント:

コメントを投稿