日付と時間(2)

「日付と時刻」をデータとして扱う方法です.Date クラスのオブジェクトは生成時にその時点の日付&時刻を取得しますが,ここで紹介する Calendar クラスのオブジェクトは日付&時刻を1つのデータと見て日数計算(「〜日あと」とか「〜週間前」,「〜時間後」とかの計算)をするためのものです.
 下のサンプルプログラム “CalendarTest1.java” では最初に「2014/01/01,00:00:00」の日付をデータとして用意して「〜日後」「〜時間後」のような計算をしている例です.
 set() メソッドで日付や時刻を設定し,add() メソッドで日数や時間を加算し,get() メソッドで日付や時刻を取り出します.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import java.util.*;
 
class CalendarTest1 {
	public static void main( String argv[] ) {
 
		int y, m, d, wd2, h, min, sec;
		Calendar cal = Calendar.getInstance();
		String wd[] = { "日", "月", "火", "水", "木", "金", "土" };
 
		/* 2014/01/01, 00:00:00 */
		cal.set(Calendar.YEAR,2012);
		cal.set(Calendar.MONTH,1-1);
		cal.set(Calendar.DATE,1);
		cal.set(Calendar.HOUR_OF_DAY,0);
		cal.set(Calendar.MINUTE,0);
		cal.set(Calendar.SECOND,0);
 
		/* after 86,400 seconds */
		cal.add(Calendar.SECOND,86400);
		y = cal.get(Calendar.YEAR);
		m = cal.get(Calendar.MONTH) + 1;
		d = cal.get(Calendar.DATE);
		wd2 = cal.get(Calendar.DAY_OF_WEEK) - 1;
		System.out.printf("%d/%02d/%02d(%s)\n",y,m,d,wd[wd2]);
 
		/* after 12 Months */
		cal.add(Calendar.MONTH,12);
		y = cal.get(Calendar.YEAR);
		m = cal.get(Calendar.MONTH) + 1;
		d = cal.get(Calendar.DATE);
		wd2 = cal.get(Calendar.DAY_OF_WEEK) - 1;
		System.out.printf("%d/%02d/%02d(%s)\n",y,m,d,wd[wd2]);
 
		/* after 28 Days */
		cal.add(Calendar.DATE,28);
		y = cal.get(Calendar.YEAR);
		m = cal.get(Calendar.MONTH) + 1;
		d = cal.get(Calendar.DATE);
		wd2 = cal.get(Calendar.DAY_OF_WEEK) - 1;
		System.out.printf("%d/%02d/%02d(%s)\n",y,m,d,wd[wd2]);
 
		/* after 24 Hours */
		cal.add(Calendar.HOUR_OF_DAY,24);
		y = cal.get(Calendar.YEAR);
		m = cal.get(Calendar.MONTH) + 1;
		d = cal.get(Calendar.DATE);
		wd2 = cal.get(Calendar.DAY_OF_WEEK) - 1;
		System.out.printf("%d/%02d/%02d(%s)\n",y,m,d,wd[wd2]);
 
		/* after 31,536,000 Seconds */
		cal.add(Calendar.SECOND,31536000);
		y = cal.get(Calendar.YEAR);
		m = cal.get(Calendar.MONTH) + 1;
		d = cal.get(Calendar.DATE);
		wd2 = cal.get(Calendar.DAY_OF_WEEK) - 1;
		System.out.printf("%d/%02d/%02d(%s)\n",y,m,d,wd[wd2]);
	}
}

 このプログラムを実行すると,次のような内容が表示されます.

2012/01/02(月)
2013/01/02(水)
2013/01/30(水)
2013/01/31(木)
2014/01/31(金)

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)