TimeZoneInfo.GetSystemTimeZones メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
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
設定すると、メソッドは返されたコレクションの並べ替えを回避しようとします。 このオプションは、呼び出し元が並べ替えられたリストを必要とせず、パフォーマンスの向上を目的としている場合に役立ちます。
適用対象
.NET