TimeZoneInfo.GetSystemTimeZones Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Aşırı Yüklemeler
| Name | Description |
|---|---|
| GetSystemTimeZones() |
Yerel sistemde hangi bilgilerin kullanılabildiğiyle ilgili tüm saat dilimlerinden oluşan sıralanmış bir koleksiyon döndürür. |
| GetSystemTimeZones(Boolean) |
Yerel makineden geçerli tüm TimeZone'ları içeren bir ReadOnlyCollection<T> döndürür. Bu yöntem TimeZoneNotFoundException veya InvalidTimeZoneException oluşturmaz . |
GetSystemTimeZones()
- Kaynak:
- TimeZoneInfo.cs
- Kaynak:
- TimeZoneInfo.cs
- Kaynak:
- TimeZoneInfo.cs
- Kaynak:
- TimeZoneInfo.cs
- Kaynak:
- TimeZoneInfo.cs
Yerel sistemde hangi bilgilerin kullanılabildiğiyle ilgili tüm saat dilimlerinden oluşan sıralanmış bir koleksiyon döndürür.
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)
Döndürülenler
Salt okunur bir nesne koleksiyonu TimeZoneInfo .
- Öznitelikler
Özel durumlar
Tüm saat dilimi bilgilerini depolamak için yeterli bellek yok.
Kullanıcının saat dilimi bilgilerini içeren kayıt defteri anahtarlarından okuma izni yok.
Örnekler
Aşağıdaki örnek, bir bilgisayarda tanımlanan saat dilimlerini temsil eden saat dilimi nesnelerinin bir koleksiyonunu alır ve bunlar hakkındaki bilgileri bir metin dosyasına yazar.
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
Açıklamalar
GetSystemTimeZones yöntemi, kayıt defterinin HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones anahtarının Windows sistemlerindeki alt anahtarlarından ve Linux ve macOS üzerindeki ICU Kitaplığı tüm kullanılabilir saat dilimi bilgilerini alır. Tek tek TimeZoneInfo nesnelerin belirli dize özellikleri için değerleri başarıyla alamıyor ve ayrıştıramıyorsa, bu yöntem değerlerini boş bir dizeye ("") ayarlar.
Important
GetSystemTimeZones yöntemi, yalnızca Windows kayıt defterinde veya ICU kitaplığında tanımlanan saat dilimleri için TimeZoneInfo nesne koleksiyonunu döndürür. Yönteminin aşırı yüklemeleri kullanılarak oluşturulan saat dilimlerini CreateCustomTimeZone içermez. Bunlara yalnızca saat dilimi oluşturma yöntemi tarafından döndürülen nesne başvurusu aracılığıyla erişilebilir.
Bu yöntem tarafından döndürülen koleksiyon UTC uzaklığı ve aynı UTC uzaklığı olan saat dilimleri için geçerli kültürü kullanan görünen ada göre sıralanır. Görünen ad hakkında bilgi için bkz DisplayName. .
Bu yöntem tarafından döndürülen ReadOnlyCollection<T> nesnesi IEnumerable<T> arabirimini destekler; bu da foreach (C#'de) veya For Each…Next (Visual Basic) deyimleri kullanılarak yinelenebilir. Döngünün her yinelemesi koleksiyondaki bir sonraki TimeZoneInfo nesneyi sağlar.
Nesne koleksiyonu TimeZoneInfo , yerel bilgisayarda tanımlanan saat dilimlerini temsil eder; her zaman diliminde tüm saat dilimleri için tam bilgi sağlamayabilir. Uygulamanız yerel bilgisayarda saat dilimlerinin bulunmaması gerekiyorsa, yönteminin aşırı yüklemelerini kullanarak özel saat dilimleri CreateCustomTimeZone oluşturabilirsiniz. Daha fazla bilgi için bkz . Nasıl yapılır: Ayarlama Kuralları Olmadan Saat Dilimleri Oluşturma ve Nasıl yapılır: Ayarlama Kurallarıyla Saat Dilimleri Oluşturma.
Ayrıca yöntemini çağırarak FindSystemTimeZoneById ve parametre olarak almak istediğiniz saat diliminin tanımlayıcısını sağlayarak yerel bilgisayarda tek bir saat diliminin tanımlanıp tanımlanmadığını belirleyebilirsiniz.
Şunlara uygulanır
GetSystemTimeZones(Boolean)
- Kaynak:
- TimeZoneInfo.cs
- Kaynak:
- TimeZoneInfo.cs
- Kaynak:
- TimeZoneInfo.cs
- Kaynak:
- TimeZoneInfo.cs
Yerel makineden geçerli tüm TimeZone'ları içeren bir ReadOnlyCollection<T> döndürür. Bu yöntem TimeZoneNotFoundException veya InvalidTimeZoneException oluşturmaz .
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)
Parametreler
- skipSorting
- Boolean
ise true, döndürülen koleksiyon mutlaka sıralanmayabilir.
Döndürülenler
Açıklamalar
skipSorting parametresini olarak trueayarlayarak yöntemi, döndürülen koleksiyonu sıralamaktan kaçınmaya çalışır. Arayan sıralanmış liste gerektirmediğinde ve performansı artırmayı hedeflediğinde bu seçenek yararlı olabilir.