Java 入門

ホーム > 日時・タイムゾーンの扱い > カレンダーとタイムゾーンの利用

カレンダーとタイムゾーンの利用

ここでは java.util.Calendar クラスと java.util.TimeZone クラスを利用する方法を示します。

タイムゾーン (TimeZone)」にて記載したように、日本のタイムゾーン ID が "Asia/Tokyo" を利用可能であるとすると、 非常に簡単にタイムゾーン毎のローカル時刻取得可能です。

このテストに先立ち念のため書いておきますと、私はロサンゼルスに住んでおりますので、デフォルトでアメリカの西海岸の時間がとれてますので、 お間違えのないようご注意ください。

カレンダーによる日付と時刻の取得

java.util.Calendar クラスを利用すると簡単に、直感的にわかる形で、日時の情報を取得できます。

DateTime では 1900 年からの年数であったり、ちょっと面倒がありましたね。

import java.util.Calendar;
import java.util.TimeZone;

public class DateTest1 {

	public static void main(String[] args){
		Calendar c = Calendar.getInstance();
		// Los Angeles
		displayTime(c);		
	}
	
	protected static void displayTime(Calendar c){
		System.out.println(c.getTimeZone().getDisplayName());
		System.out.println(
			c.get(Calendar.YEAR) 
			+ "_" + (c.get(Calendar.MONTH) + 1)
			+ "_" + c.get(Calendar.DAY_OF_MONTH)
			+ "_" + c.get(Calendar.HOUR_OF_DAY)
			+ "_" + c.get(Calendar.MINUTE)
			+ "_" + c.get(Calendar.SECOND)
			);
	}
}

この実行結果発議の通りです。

Pacific Standard Time
2011_9_27_22_0_20

直感的、といっても一点注意が必要で月 (month) は 0 始まりです。従って、1月は 0 です。

タイムゾーンの切り替えの動作確認

それではタイムゾーンを日本 "Asia/Tokyo" に切り替えてどのように動作するか確認しましょう。

import java.util.Calendar;
import java.util.TimeZone;

public class DateTest1 {

	public static void main(String[] args){
		Calendar c = Calendar.getInstance();
		// Los Angeles
		displayTime(c);		
		// Japan
		TimeZone tz = TimeZone.getTimeZone("Asia/Tokyo");
		c.setTimeZone(tz);
		displayTime(c);
	}
	
	protected static void displayTime(Calendar c){
		System.out.println(c.getTimeZone().getDisplayName());
		System.out.println(
			c.get(Calendar.YEAR) 
			+ "_" + (c.get(Calendar.MONTH) + 1)
			+ "_" + c.get(Calendar.DAY_OF_MONTH)
			+ "_" + c.get(Calendar.HOUR_OF_DAY)
			+ "_" + c.get(Calendar.MINUTE)
			+ "_" + c.get(Calendar.SECOND)
			);
	}
}

java.util.TimeZone クラスの getTimeZone メソッドに "Asia/Tokyo" を渡しているラインで、日本のタイムゾーンの TimeZone オブジェクトを取得しています。

Pacific Standard Time
2011_9_27_22_3_2
Japan Standard Time
2011_9_28_14_3_2

この結果から、確かに同じ時刻でのアメリカ西海岸時刻と日本の時刻が取得されたことがわかります。

ホーム > 日時・タイムゾーンの扱い > カレンダーとタイムゾーンの利用