Javaでの日付の扱いについておさらい

	@Test
	public void utilDateの実験() throws Exception {
		Date date = new Date();
		DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH");
		assertThat(dateFormat.getTimeZone(), is(TimeZone.getTimeZone("Asia/Tokyo")));
		assertThat(dateFormat.format(date), is("2010/09/07 22"));
		
	}

(上記は1時間しかグリーンにならない駄目テストコードです))
JUnit上で実行するとグリーン。
開発環境のkotori上で実行すると下記のアサーションエラー。

Expected: is
got:

タイムゾーンとは

UTC

協定世界時(きょうていせかいじ、UTC - Universal Time, Coordinated)(中略)
世界各地の標準時はこれを基準として決めている。例えば、日本標準時は(JST)で協定世界時より9時間進んでおり、「+0900(JST)」のように表示する。
協定世界時 - Wikipedia

GMT

グリニッジ標準時グリニッジひょうじゅんじ、Greenwich Mean Time, GMT)(中略)
地球の自転はいくらか不規則で(ΔTを参照のこと)、またわずかに減速しつつある。原子時計を用いると地球自転よりも安定した時間の基準を得られる。1972年1月1日、GMT協定世界時 (UTC) による国際的時刻基準に置き換えられた。
グリニッジ標準時 - Wikipedia

jsonシリアライズするときは?

java.util.Date型のプロパティをjson-libでシリアライズしたら下記のようになった。

{"prop1":"","date":{"time":1283868223772,"minutes":3,"seconds":43,"hours":23,"month":8,"year":110,"timezoneOffset":-540,"day":2,"date":7},"key":null}
JavaのTimeZone

通常は、getDefault を使用して TimeZone を取得します。このメソッドは、プログラムを実行している場所のタイムゾーンに基づいた TimeZone を作成します。たとえば、日本で実行されているプログラムの場合、getDefault は日本標準時を基に TimeZone オブジェクトを作成します。

タイムゾーン ID を指定し getTimeZone を使用して TimeZone を取得することもできます。たとえば、太平洋標準時のタイムゾーン ID は、「America/Los_Angeles」です。したがって、次のように入力して PST TimeZone オブジェクトを取得できます。

 TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");

TimeZone (Java 2 Platform SE 5.0)

TimeZone#getTimeZone

getTimeZone

public static TimeZone getTimeZone(String ID)
指定された ID の TimeZone を取得します。
パラメータ:
ID - TimeZone の ID。 「PST」のような短縮形式、「America/Los_Angeles」のような完全な名前、あるいは「GMT-8:00」のようなカスタム ID のどれか。短縮形式は、JDK 1.1.x との互換性のためだけにサポートされているため、完全な名前を使用する必要がある
(中略)
3 文字のタイムゾーン ID

JDK 1.1.x との互換性のために、その他の 3 文字のタイムゾーン ID (「PST」、「CTT」、「AST」など) もサポートされています。ただし、複数のタイムゾーンに同じ省略形が使用されることが多く (「CST」はアメリカの「中央標準時」と「中国標準時」など)、Java プラットフォームではその 1 つしか認識されないため、この使用は推奨されません。
TimeZone (Java 2 Platform SE 5.0)

JST」のような3文字タイムゾーンIDの指定は、重複があるため避けるべきとのこと。