« .classpathはリポジトリで管理すべきか否か? | Main | DigestOutputStream »

2007.02.21

TimeZone

 偶然、TimeZoneのデフォルト値がAsia/Tokyoになっていない(GMT標準時になっていた)マシンを使う機会がありました。当然ながら、

System.out.println(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new Date()));

なんてやっても、ずれた時刻(9時間前の時刻)が表示されてしまうわけで。

 まぁ、これ自体はjava.text.DateFormat#setTimeZone(java.util.TimeZone)でAsia/Tokyoを指定すればOKなのですが、フォーマッタを作成する毎にsetTimeZoneを行うなんて面倒だなぁ・・・と思っていたら、やはりありました。

TimeZone.setDefault(TimeZone.getTimeZone("Asia/Tokyo"));

でTimeZoneの初期値をセットしておけば、フォーマッタ作成毎にTimeZoneをセットすることなく、意図する結果を出力することができました。

 ちなみに、

for (String zone : TimeZone.getAvailableIDs()) {
 System.out.println(zone);
}

で、使用可能なタイムゾーンの一覧を取得することが可能です。日本標準時なら、Asia/Tokyoの他にEtc/GMT-9、JST、Japanが使用可能です(Java6の場合。他のバージョンでは結果が異なる可能性があります)。

|

« .classpathはリポジトリで管理すべきか否か? | Main | DigestOutputStream »

Java」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference TimeZone:

« .classpathはリポジトリで管理すべきか否か? | Main | DigestOutputStream »