TimeZoneInfoクラスでは、タイムゾーンの名称(StandardNameプロパティ)、タイムゾーンにおける標準時とUTCとの差(オフセット値、BaseUtcOffsetプロパティ)、タイムゾーンに夏時間が存在するかどうか(SupportsDaylightSavingTimeプロパティ)、といった情報を参照することが出来ます。
次の例では、実行環境に設定されているタイムゾーンをLocalプロパティで取得し、その情報を表示しています。
ローカルタイムゾーン以外を表すTimeZoneInfoを取得したい場合は、FindSystemTimeZoneByIdメソッドに目的のタイムゾーンのIDを指定して取得します。 Windowsでは、レジストリに格納されている情報を元にTimeZoneInfoが取得されます。 FindSystemTimeZoneByIdメソッドでは、該当するタイムゾーンが見つからない場合、例外TimeZoneNotFoundExceptionがスローされます。
このほか、Localプロパティと同様、Utcプロパティを参照すれば、UTCのタイムゾーンを表すTimeZoneInfoを取得することが出来ます。
TimeZoneInfo.FindSystemTimeZoneByIdメソッドで特定のタイムゾーンに関する情報を取得する
Imports System
Class Sample
Shared Sub Main()
Dim timezones() As TimeZoneInfo = New TimeZoneInfo() { _
TimeZoneInfo.Local, _
TimeZoneInfo.Utc _
}
For Each tz In timezones
Console.WriteLine("{0} ({1}) {2}", tz.StandardName, tz.BaseUtcOffset, tz.DisplayName)
Next
Console.WriteLine()
' IDからTimeZoneInfoを取得
Dim ids() As String = New String() { _
"JST", "Tokyo Standard Time", "Asia/Tokyo", _
"EST", "Eastern Standard Time", "America/New_York", _
"GMT", "GMT Standard Time", "Europe/London" _
}
For Each id As String In ids
Console.Write("{0,-25} -> ", id)
Try
Dim tz As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(id)
Console.WriteLine("{0} ({1}) {2}", tz.StandardName, tz.BaseUtcOffset, tz.DisplayName)
Catch ex As TimeZoneNotFoundException
Console.WriteLine("(time zone not found)")
End Try
Next
End Sub
End Class
タイムゾーンが「大阪、札幌、東京」での実行結果例
東京 (標準時) (09:00:00) (UTC+09:00) 大阪、札幌、東京 UTC (00:00:00) UTC JST -> (time zone not found) Tokyo Standard Time -> 東京 (標準時) (09:00:00) (UTC+09:00) 大阪、札幌、東京 Asia/Tokyo -> (time zone not found) EST -> (time zone not found) Eastern Standard Time -> 東部標準時 (-05:00:00) (UTC-05:00) 東部標準時 (米国およびカナダ) America/New_York -> (time zone not found) GMT -> (time zone not found) GMT Standard Time -> GMT 標準時 (00:00:00) (UTC+00:00) ダブリン、エジンバラ、リスボン、ロンドン Europe/London -> (time zone not found)
Asia/Tokyoでの実行結果例
日本標準時 (09:00:00) 日本標準時 UTC (00:00:00) UTC JST -> (time zone not found) Tokyo Standard Time -> (time zone not found) Asia/Tokyo -> 日本標準時 (09:00:00) 日本標準時 EST -> GMT-05:00 (-05:00:00) GMT-05:00 Eastern Standard Time -> (time zone not found) America/New_York -> アメリカ東部標準時 (-05:00:00) アメリカ東部標準時 GMT -> グリニッジ標準時 (00:00:00) グリニッジ標準時 GMT Standard Time -> (time zone not found) Europe/London -> グリニッジ標準時 (00:00:00) グリニッジ標準時
Asia/Tokyoでの実行結果例
JST (09:00:00) JST UTC (00:00:00) UTC JST -> (time zone not found) Tokyo Standard Time -> (time zone not found) Asia/Tokyo -> JST (09:00:00) JST EST -> EST (-05:00:00) EST Eastern Standard Time -> (time zone not found) America/New_York -> EST (-05:00:00) EST GMT -> GMT (00:00:00) GMT GMT Standard Time -> (time zone not found) Europe/London -> GMT (00:00:00) GMT
FindSystemTimeZoneByIdメソッドでは、システムに保存されているタイムゾーン情報の形式の違いにより、WindowsではJST
やTokyo Standard Time
といったタイムゾーン名を、Linux等ではAsia/Tokyo
といった地域/都市名の表記を指定する必要があります。
システムで使用可能なすべてのタイムゾーンを取得するには、GetSystemTimeZonesメソッドを使います。