TimeZoneInfoクラスでは、タイムゾーンの名称(StandardNameプロパティ)、タイムゾーンにおける標準時とUTCとの差(オフセット値、BaseUtcOffsetプロパティ)、タイムゾーンに夏時間が存在するかどうか(SupportsDaylightSavingTimeプロパティ)、といった情報を参照することが出来ます。

次の例では、実行環境に設定されているタイムゾーンをLocalプロパティで取得し、その情報を表示しています。

TimeZoneInfo.Localプロパティでローカルタイムゾーンに関する情報を取得する
Imports System

Class Sample
  Shared Sub Main()
    ' ローカルタイムゾーンの情報を取得
    Dim local As TimeZoneInfo = TimeZoneInfo.Local

    Console.WriteLine("StandardName: {0}", local.StandardName)
    Console.WriteLine("DisplayName: {0}", local.DisplayName)
    Console.WriteLine("BaseUtcOffset: {0}", local.BaseUtcOffset)
    Console.WriteLine("SupportsDaylightSavingTime: {0}", local.SupportsDaylightSavingTime)
  End Sub
End Class
タイムゾーンが「大阪、札幌、東京」での実行結果例
StandardName: 東京 (標準時)
DisplayName: (UTC+09:00) 大阪、札幌、東京
BaseUtcOffset: 09:00:00
SupportsDaylightSavingTime: False
Asia/Tokyoでの実行結果例
StandardName: 日本標準時
DisplayName: 日本標準時
BaseUtcOffset: 09:00:00
SupportsDaylightSavingTime: True
Asia/Tokyoでの実行結果例
StandardName: JST
DisplayName: JST
BaseUtcOffset: 09:00:00
SupportsDaylightSavingTime: True

ローカルタイムゾーン以外を表すTimeZoneInfoを取得したい場合は、FindSystemTimeZoneByIdメソッドに目的のタイムゾーンのIDを指定して取得します。 Windowsでは、レジストリに格納されている情報を元にTimeZoneInfoが取得されます。 FindSystemTimeZoneByIdメソッドでは、該当するタイムゾーンが見つからない場合、例外TimeZoneNotFoundExceptionがスローされます。

このほか、Localプロパティと同様、Utcプロパティを参照すれば、UTCのタイムゾーンを表すTimeZoneInfoを取得することが出来ます。

FindSystemTimeZoneByIdメソッドでは、システムに保存されているタイムゾーン情報の形式の違いにより、WindowsではJSTTokyo Standard Timeといったタイムゾーン名を、Linux等ではAsia/Tokyoといった地域/都市名の表記を指定する必要があります。

システムで使用可能なすべてのタイムゾーンを取得するには、GetSystemTimeZonesメソッドを使います。