「Java」タイムゾーンについて
Java のタイムゾーンについて簡単に調べたので、その時のメモ。
[ 環境情報 ]
Windows 7 SP1
Java SE 7
デフォルトのタイムゾーンは、TimeZone#getDefault メソッドや、システムプロパティの user.timezone で確認できる。
import java.util.TimeZone; class TimeZoneSample { public static void main(String[] args) { System.out.println(TimeZone.getDefault()); System.out.println(System.getProperty("user.timezone")); } }
■ 出力結果
sun.util.calendar.ZoneInfo[id="Asia/Tokyo",offset=32400000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null] Asia/Tokyo
デフォルトのタイムゾーンは、[ コントロールパネル ] - [ 日付と時刻 ] - [ タイムゾーンの変更 ] から設定できる値を基にしてるっぽい。
上記は設定が「UTC + 09:00」の場合。例えば、「UTC」とかにしてやると、以下の出力結果になる。
■ 出力結果 ( UTC の場合 )
sun.util.calendar.ZoneInfo[id="UTC",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null] UTC
システムプロパティに値をもっているので、もちろん -D オプションで指定してやってもデフォルトのタイムゾーンを変更することができる。
java -Duser.timezone="Europe/Paris" TimeZoneSample sun.util.calendar.ZoneInfo[id="Europe/Paris",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]] Europe/Paris
サポートされているタイムゾーンの ID は、以下の TimeZone#getAvailableIDs で一覧の確認ができるみたいです。
String[] supportID = TimeZone.getAvailableIDs();
for(String s : supportID) {
System.out.println(s);
}
以下 API ドキュメント。
・TimeZone (Java Platform SE 7 )
http://docs.oracle.com/javase/jp/7/api/java/util/TimeZone.html
以上です。