« .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

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/13988952

Listed below are links to weblogs that reference TimeZone:

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