TimeZoneInfo.GetSystemTimeZones メソッド

定義

オーバーロード

GetSystemTimeZones()

ローカル システムで情報を使用できるすべてのタイム ゾーンのコレクションを、並べ替えられた状態で返します。

GetSystemTimeZones(Boolean)

ReadOnlyCollection<T>ローカル コンピューターから有効なすべての TimeZone を含む を返します。 このメソッドは、TimeZoneNotFoundException または InvalidTimeZoneException をスロー しません

GetSystemTimeZones()

ソース:
TimeZoneInfo.cs
ソース:
TimeZoneInfo.cs
ソース:
TimeZoneInfo.cs

ローカル システムで情報を使用できるすべてのタイム ゾーンのコレクションを、並べ替えられた状態で返します。

public:
 static System::Collections::ObjectModel::ReadOnlyCollection<TimeZoneInfo ^> ^ GetSystemTimeZones();
public static System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo> GetSystemTimeZones ();
[System.Security.SecurityCritical]
[System.Security.SecurityTreatAsSafe]
public static System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo> GetSystemTimeZones ();
static member GetSystemTimeZones : unit -> System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo>
[<System.Security.SecurityCritical>]
[<System.Security.SecurityTreatAsSafe>]
static member GetSystemTimeZones : unit -> System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo>
Public Shared Function GetSystemTimeZones () As ReadOnlyCollection(Of TimeZoneInfo)

戻り値

TimeZoneInfo オブジェクトの読み取り専用のコレクション。

属性

例外

すべてのタイム ゾーン情報を格納するにはメモリが不足しています。

ユーザーには、タイム ゾーン情報が含まれているレジストリ キーから読み取る権限がありません。

次の例では、コンピューターで定義されているタイム ゾーンを表すタイム ゾーン オブジェクトのコレクションを取得し、それらに関する情報をテキスト ファイルに書き込みます。

using System;
using System.Globalization;
using System.IO;
using System.Collections.ObjectModel;

public class Example
{
   public static void Main()
   {
      const string OUTPUTFILENAME = @"C:\Temp\TimeZoneInfo.txt";
   
      DateTimeFormatInfo dateFormats = CultureInfo.CurrentCulture.DateTimeFormat;
      ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones(); 
      StreamWriter sw = new StreamWriter(OUTPUTFILENAME, false);
   
      foreach (TimeZoneInfo timeZone in timeZones)
      {
         bool hasDST = timeZone.SupportsDaylightSavingTime;
         TimeSpan offsetFromUtc = timeZone.BaseUtcOffset;
         TimeZoneInfo.AdjustmentRule[] adjustRules;
         string offsetString;
      
         sw.WriteLine("ID: {0}", timeZone.Id);
         sw.WriteLine("   Display Name: {0, 40}", timeZone.DisplayName);
         sw.WriteLine("   Standard Name: {0, 39}", timeZone.StandardName);
         sw.Write("   Daylight Name: {0, 39}", timeZone.DaylightName);
         sw.Write(hasDST ? "   ***Has " : "   ***Does Not Have ");
         sw.WriteLine("Daylight Saving Time***");
         offsetString = String.Format("{0} hours, {1} minutes", offsetFromUtc.Hours, offsetFromUtc.Minutes);
         sw.WriteLine("   Offset from UTC: {0, 40}", offsetString);
         adjustRules = timeZone.GetAdjustmentRules();
         sw.WriteLine("   Number of adjustment rules: {0, 26}", adjustRules.Length);  
         if (adjustRules.Length > 0)
         {
            sw.WriteLine("   Adjustment Rules:");
            foreach (TimeZoneInfo.AdjustmentRule rule in adjustRules)
            {
               TimeZoneInfo.TransitionTime transTimeStart = rule.DaylightTransitionStart;
               TimeZoneInfo.TransitionTime transTimeEnd = rule.DaylightTransitionEnd; 
            
               sw.WriteLine("      From {0} to {1}", rule.DateStart, rule.DateEnd);
               sw.WriteLine("      Delta: {0}", rule.DaylightDelta);
               if (! transTimeStart.IsFixedDateRule)
               {
                  sw.WriteLine("      Begins at {0:t} on {1} of week {2} of {3}", transTimeStart.TimeOfDay, 
                                                                                transTimeStart.DayOfWeek,                                                                                 
                                                                                transTimeStart.Week, 
                                                                                dateFormats.MonthNames[transTimeStart.Month - 1]);
                  sw.WriteLine("      Ends at {0:t} on {1} of week {2} of {3}", transTimeEnd.TimeOfDay,
                                                                                transTimeEnd.DayOfWeek, 
                                                                                transTimeEnd.Week,
                                                                                dateFormats.MonthNames[transTimeEnd.Month - 1]);
               }
               else
               {
                  sw.WriteLine("      Begins at {0:t} on {1} {2}", transTimeStart.TimeOfDay, 
                                                                 transTimeStart.Day, 
                                                                 dateFormats.MonthNames[transTimeStart.Month - 1]);
                  sw.WriteLine("      Ends at {0:t} on {1} {2}", transTimeEnd.TimeOfDay, 
                                                               transTimeEnd.Day, 
                                                               dateFormats.MonthNames[transTimeEnd.Month - 1]);
               }
            }
         }            
      }
      sw.Close();
   }
}
open System
open System.Globalization
open System.IO
open System.Collections.ObjectModel

[<EntryPoint>]
let main _ =
    let OUTPUTFILENAME = @"C:\Temp\TimeZoneInfo.txt"

    let dateFormats = CultureInfo.CurrentCulture.DateTimeFormat
    let timeZones = TimeZoneInfo.GetSystemTimeZones() 
    use sw = new StreamWriter(OUTPUTFILENAME, false)

    for timeZone in timeZones do
        let hasDST = timeZone.SupportsDaylightSavingTime
        let offsetFromUtc = timeZone.BaseUtcOffset
    
        sw.WriteLine $"ID: {timeZone.Id}"
        sw.WriteLine $"   Display Name: {timeZone.DisplayName, 40}"
        sw.WriteLine $"   Standard Name: {timeZone.StandardName, 39}"
        sw.Write $"   Daylight Name: {timeZone.DaylightName, 39}"
        sw.Write(if hasDST then "   ***Has " else "   ***Does Not Have ")
        sw.WriteLine "Daylight Saving Time***"
        let offsetString = $"{offsetFromUtc.Hours} hours, {offsetFromUtc.Minutes} minutes"
        sw.WriteLine $"   Offset from UTC: {offsetString, 40}"
        let adjustRules = timeZone.GetAdjustmentRules()
        sw.WriteLine $"   Number of adjustment rules: {adjustRules.Length, 26}"
        if adjustRules.Length > 0 then
            sw.WriteLine "   Adjustment Rules:"
            for rule in adjustRules do
                let transTimeStart = rule.DaylightTransitionStart
                let transTimeEnd = rule.DaylightTransitionEnd 
            
                sw.WriteLine $"      From {rule.DateStart} to {rule.DateEnd}"
                sw.WriteLine $"      Delta: {rule.DaylightDelta}"
                if not transTimeStart.IsFixedDateRule then
                    sw.WriteLine $"      Begins at {transTimeStart.TimeOfDay:t} on {transTimeStart.DayOfWeek} of week {transTimeStart.Week} of {dateFormats.MonthNames[transTimeStart.Month - 1]}"
                    sw.WriteLine $"      Ends at {transTimeEnd.TimeOfDay:t} on {transTimeEnd.DayOfWeek} of week {transTimeEnd.Week} of {dateFormats.MonthNames[transTimeEnd.Month - 1]}"
                else
                    sw.WriteLine $"      Begins at {transTimeStart.TimeOfDay:t} on {transTimeStart.Day} {dateFormats.MonthNames[transTimeStart.Month - 1]}"
                    sw.WriteLine $"      Ends at {transTimeEnd.TimeOfDay:t} on {transTimeEnd.Day} {dateFormats.MonthNames[transTimeEnd.Month - 1]}"
    0
Imports System.Collections.ObjectModel
Imports System.Globalization
Imports System.IO

Module Example
   Public Sub Main()
      Const OUTPUTFILENAME As String = "C:\Temp\TimeZoneInfo.txt"
      
      Dim timeZones As ReadOnlyCollection(Of TimeZoneInfo) = TimeZoneInfo.GetSystemTimeZones() 
      Dim sw As StreamWriter = New StreamWriter(OUTPUTFILENAME, False)
      
      For Each timeZone As TimeZoneInfo in timeZones
         Dim hasDST As Boolean = timeZone.SupportsDaylightSavingTime
         Dim offsetFromUtc As TimeSpan = timeZone.BaseUtcOffset
         Dim adjustRules() As System.TimeZoneInfo.AdjustmentRule
         Dim offsetString As String
         
         sw.WriteLine("ID: {0}", timeZone.Id)
         sw.WriteLine("   Display Name: {0, 40}", timeZone.DisplayName)
         sw.WriteLine("   Standard Name: {0, 39}", timeZone.StandardName)
         sw.Write("   Daylight Name: {0, 39}", timeZone.DaylightName)
         sw.Write(iif(hasDST, "   ***Has ", "   ***Does Not Have "))
         sw.WriteLine("Daylight Saving Time***")
         offsetString = String.Format("{0} hours, {1} minutes", offsetFromUtc.Hours, offsetFromUtc.Minutes)
         sw.WriteLine("   Offset from UTC: {0, 40}", offsetString)
         adjustRules = timeZone.GetAdjustmentRules()
         sw.WriteLine("   Number of adjustment rules: {0, 26}", adjustRules.Length)  
         If adjustRules.Length > 0 Then
            sw.WriteLine("   Adjustment Rules:")
            For Each rule As TimeZoneInfo.AdjustmentRule In adjustRules
               Dim transTimeStart As TimeZoneInfo.TransitionTime = rule.DaylightTransitionStart
               Dim transTimeEnd As TimeZoneInfo.TransitionTime = rule.DaylightTransitionEnd 
               
               sw.WriteLine("      From {0} to {1}", rule.DateStart, rule.DateEnd)
               sw.WriteLine("      Delta: {0}", rule.DaylightDelta)
               If Not transTimeStart.IsFixedDateRule
                  sw.WriteLine("      Begins at {0:t} on {1} of week {2} of {3}", transTimeStart.TimeOfDay, _
                                                                                transTimeStart.DayOfWeek, _
                                                                                transTimeStart.Week, _
                                                                                MonthName(transTimeStart.Month))
                  sw.WriteLine("      Ends at {0:t} on {1} of week {2} of {3}", transTimeEnd.TimeOfDay, _
                                                                                transTimeEnd.DayOfWeek, _
                                                                                transTimeEnd.Week, _
                                                                                MonthName(transTimeEnd.Month))
               Else
                  sw.WriteLine("      Begins at {0:t} on {1} {2}", transTimeStart.TimeOfDay, _
                                                                 transTimeStart.Day, _
                                                                 MonthName(transTimeStart.Month))
                  sw.WriteLine("      Ends at {0:t} on {1} {2}", transTimeEnd.TimeOfDay, _
                                                               transTimeEnd.Day, _
                                                               MonthName(transTimeEnd.Month))
               End If
            Next
         End If            
      Next
      sw.Close()
#  Get timezone/date details and open a stream writer
$DateFormats    = [System.Globalization.CultureInfo]::CurrentCulture.DateTimeFormat
$TimeZones      = [System.TimeZoneInfo]::GetSystemTimeZones()
$OutputFileName = 'C:\Temp\TimeZoneInfo.txt'
$Sw             = New-Object -TypeName System.IO.StreamWriter -ArgumentList $OutputFileName,$false
# Write overview information
$Sw.WriteLine('{0} Time zones on this system' -f $TimeZones.Count)

# Process each timezone on the system
# Write details to the streamwriter
foreach ($TimeZone in $TimeZones) {
 $HasDST        = $TimeZone.SupportsDaylightSavingTime
 $OffsetFromUtc = $TimeZone.BaseUtcOffset
 $Sw.WriteLine("ID: {0}" -f $TimeZone.Id)
 $Sw.WriteLine("   Display Name:  {0}" -f $TimeZone.DisplayName)
 $Sw.WriteLine("   Standard Name: {0}" -f $TimeZone.StandardName)
 $Sw.Write("   Daylight Name: {0}" -f $TimeZone.DaylightName)
 $Sw.Write( $(If ($HasDST) {"  ***Has: "} Else {"  ***Does Not Have: "}))
 $Sw.WriteLine("Daylight Saving Time***")
 $OffsetString = "{0} hours, {1} minutes" -f $OffsetFromUtc.Hours, $OffsetFromUtc.Minutes
 $Sw.WriteLine("   Offset from UTC: {0}"  -f $offsetString)
 $AdjustRules = $timeZone.GetAdjustmentRules()
 $Sw.WriteLine("   Number of adjustment rules: {0}" -f $adjustRules.Count)
 If ($AdjustRules.Count -gt 0)
 {
    $Sw.WriteLine("   Adjustment Rules:")
    foreach ($Rule in $AdjustRules)
    {
       $TransTimeStart = $Rule.DaylightTransitionStart
       $TransTimeEnd   = $Rule.DaylightTransitionEnd
       $Sw.WriteLine(("     From   {0} to {1}" -f $Rule.DateStart, $Rule.DateEnd))
       $Sw.WriteLine(("       Delta: {0}" -f $Rule.DaylightDelta))
       if (-Not  $TransTimeStart.IsFixedDateRule)
       {
          $Sw.WriteLine(("       Begins at {0:t} on {1} of week {2} of {3}" -f $TransTimeStart.TimeOfDay, 
                                                                             $TransTimeStart.DayOfWeek,                                                                                 
                                                                             $TransTimeStart.Week, 
                                                                             $DateFormats.MonthNames[$TransTimeStart.Month - 1]))
          $Sw.WriteLine(("       Ends at {0:t} on {1} of week {2} of {3}" -f $TransTimeEnd.TimeOfDay,
                                                                             $TransTimeEnd.DayOfWeek, 
                                                                             $TransTimeEnd.Week,
                                                                             $DateFormats.MonthNames[[int] $TransTimeEnd.Month - 1]))
       }
     else
       {
         $Sw.WriteLine(("       Begins at {0:t} on {1} {2}" -f $TransTimeStart.TimeOfDay, 
                                                             $TransTimeStart.Day, 
                                                             $DateFormats.MonthNames[$transTimeStart.Month - 1]))
         $Sw.WriteLine(("       Ends at {0:t} on {1} {2}"   -f $TransTimeEnd.TimeOfDay, 
                                                             $TransTimeEnd.Day, 
                                                             $DateFormats.MonthNames[$transTimeEnd.Month - 1]))        
       }
    } # End of processing each adjustment rule
 } # End of checking adjustment rules
} # End of processing Time Zones

# Close stream writer then display output in notepad
$Sw.Close() 

#  Output of 1st three time zones:
#  135 Time zones on this system
#  ID: Dateline Standard Time
#     Display Name:  (UTC-12:00) International Date Line West
#     Standard Name: Dateline Standard Time
#     Daylight Name: Dateline Summer Time  ***Does Not Have: Daylight Saving Time***
#     Offset from UTC: -12 hours, 0 minutes
#     Number of adjustment rules: 0
#  ID: UTC-11
#     Display Name:  (UTC-11:00) Co-ordinated Universal Time-11
#     Standard Name: UTC-11
#     Daylight Name: UTC-11  ***Does Not Have: Daylight Saving Time***
#     Offset from UTC: -11 hours, 0 minutes
#     Number of adjustment rules: 0
#  ID: Aleutian Standard Time
#     Display Name:  (UTC-10:00) Aleutian Islands
#     Standard Name: Aleutian Standard Time
#     Daylight Name: Aleutian Summer Time  ***Has: Daylight Saving Time***
#     Offset from UTC: -10 hours, 0 minutes
#     Number of adjustment rules: 2
#     Adjustment Rules:
#       From   01/01/0001 00:00:00 to 31/12/2006 00:00:00
#         Delta: 01:00:00
#         Begins at 02:00 on Sunday of week 1 of April
#         Ends at 02:00 on Sunday of week 5 of October
#       From   01/01/2007 00:00:00 to 31/12/9999 00:00:00
#         Delta: 01:00:00
#         Begins at 02:00 on Sunday of week 2 of March
#         Ends at 02:00 on Sunday of week 1 of November

注釈

メソッドは GetSystemTimeZones 、Windows システムのレジストリの HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones キーのサブキーと、Linux および macOS 上の ICU ライブラリ から、使用可能なすべてのタイム ゾーン情報を取得します。 個々 TimeZoneInfo のオブジェクトの特定の文字列プロパティの値を正常に取得および解析できない場合、このメソッドは値を空の文字列 ("") に設定します。

重要

メソッドは GetSystemTimeZones 、Windows レジストリまたは ICU ライブラリで定義されているタイム ゾーンに対してのみオブジェクトのコレクション TimeZoneInfo を返します。 メソッドのオーバーロードを使用して作成されたタイム ゾーンは CreateCustomTimeZone 含まれません。 これらは、タイム ゾーンの作成方法によって返されるオブジェクト参照を介してのみアクセスできます。

このメソッドによって返されるコレクションは、UTC オフセットで並べ替えられます。同じ UTC オフセットを持つタイム ゾーンの場合は、現在のカルチャを使用して表示名で並べ替えられます。 表示名の詳細については、「」を参照してください DisplayName

このメソッドによって返される オブジェクトはReadOnlyCollection<T>、 インターフェイスをIEnumerable<T>サポートしています。つまり、 (C#では) または For Each…Next (Visual Basic では) ステートメントをforeach使用して反復処理できます。 ループの各反復は、コレクション内の次 TimeZoneInfo のオブジェクトを提供します。

オブジェクトの TimeZoneInfo コレクションは、ローカル コンピューターで定義されているタイム ゾーンを表します。すべての期間のすべてのタイム ゾーンに関する完全な情報を提供するとは限りません。 アプリケーションでローカル コンピューターにタイム ゾーンが見つからない必要がある場合は、 メソッドのオーバーロードを使用してカスタム タイム ゾーンを CreateCustomTimeZone 作成できます。 詳細については、「 方法: 調整規則のないタイム ゾーンを作成する 」および 「方法: 調整規則を使用してタイム ゾーンを作成する」を参照してください。

メソッドを呼び出し FindSystemTimeZoneById 、パラメーターとして取得するタイム ゾーンの識別子を指定することで、ローカル コンピューターで個々のタイム ゾーンが定義されているかどうかを判断することもできます。

適用対象

GetSystemTimeZones(Boolean)

ソース:
TimeZoneInfo.cs
ソース:
TimeZoneInfo.cs

ReadOnlyCollection<T>ローカル コンピューターから有効なすべての TimeZone を含む を返します。 このメソッドは、TimeZoneNotFoundException または InvalidTimeZoneException をスロー しません

public:
 static System::Collections::ObjectModel::ReadOnlyCollection<TimeZoneInfo ^> ^ GetSystemTimeZones(bool skipSorting);
public static System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo> GetSystemTimeZones (bool skipSorting);
static member GetSystemTimeZones : bool -> System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo>
Public Shared Function GetSystemTimeZones (skipSorting As Boolean) As ReadOnlyCollection(Of TimeZoneInfo)

パラメーター

skipSorting
Boolean

の場合 true、返されるコレクションは必ずしも並べ替えられるとは限りません。

戻り値

注釈

skipSorting パラメーターを に true設定すると、メソッドは返されたコレクションの並べ替えを回避しようとします。 このオプションは、呼び出し元が並べ替えられたリストを必要とせず、パフォーマンスの向上を目的としている場合に役立ちます。

適用対象