TimeZoneInfo.GetSystemTimeZones Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Surcharges
| Nom | Description |
|---|---|
| GetSystemTimeZones() |
Retourne une collection triée de tous les fuseaux horaires sur lesquels les informations sont disponibles sur le système local. |
| GetSystemTimeZones(Boolean) |
Retourne une ReadOnlyCollection<T> valeur contenant tous les fuseaux horaires valides de l’ordinateur local. Cette méthode ne lève pas TimeZoneNotFoundException ou InvalidTimeZoneException. |
GetSystemTimeZones()
- Source:
- TimeZoneInfo.cs
- Source:
- TimeZoneInfo.cs
- Source:
- TimeZoneInfo.cs
- Source:
- TimeZoneInfo.cs
- Source:
- TimeZoneInfo.cs
Retourne une collection triée de tous les fuseaux horaires sur lesquels les informations sont disponibles sur le système local.
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)
Retours
Collection d’objets en TimeZoneInfo lecture seule.
- Attributs
Exceptions
La mémoire est insuffisante pour stocker toutes les informations de fuseau horaire.
L’utilisateur n’a pas l’autorisation de lire à partir des clés de Registre qui contiennent des informations de fuseau horaire.
Exemples
L’exemple suivant récupère une collection d’objets de fuseau horaire qui représentent les fuseaux horaires définis sur un ordinateur et écrit des informations sur ces derniers dans un fichier texte.
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
Remarques
La méthode GetSystemTimeZones récupère toutes les informations de fuseau horaire disponibles à partir des sous-clés de la clé de HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones du Registre sur les systèmes Windows et à partir de la bibliothèque ICU sur Linux et macOS. Si elle ne parvient pas à récupérer et analyser les valeurs pour des propriétés de chaîne particulières d’objets individuels TimeZoneInfo , cette méthode définit sa valeur sur une chaîne vide ( » « ).
Important
La méthode GetSystemTimeZones retourne une collection d’objets TimeZoneInfo uniquement pour les fuseaux horaires définis dans le registre Windows ou la bibliothèque ICU. Il n’inclut pas les fuseaux horaires créés à l’aide des surcharges de la CreateCustomTimeZone méthode. Celles-ci sont accessibles uniquement via la référence d’objet retournée par la méthode de création de fuseau horaire.
La collection retournée par cette méthode est triée par décalage UTC et, pour les fuseaux horaires qui ont le même décalage UTC, par le nom d’affichage à l’aide de la culture actuelle. Pour plus d’informations sur le nom complet, consultez DisplayName.
L’objet ReadOnlyCollection<T> retourné par cette méthode prend en charge l’interface IEnumerable<T>, ce qui signifie qu’elle peut être itérée à l’aide des instructions foreach (en C#) ou For Each…Next (dans Visual Basic). Chaque itération de la boucle fournit l’objet suivant TimeZoneInfo dans la collection.
La collection d’objets TimeZoneInfo représente les fuseaux horaires définis sur l’ordinateur local ; il ne fournit pas nécessairement d’informations complètes pour tous les fuseaux horaires pendant toutes les périodes. Si votre application nécessite des fuseaux horaires introuvables sur l’ordinateur local, vous pouvez créer des fuseaux horaires personnalisés à l’aide des surcharges de la CreateCustomTimeZone méthode. Pour plus d’informations, consultez Comment : créer des fuseaux horaires sans règles d’ajustement et comment : créer des fuseaux horaires avec des règles d’ajustement.
Vous pouvez également déterminer si un fuseau horaire individuel est défini sur l’ordinateur local en appelant la FindSystemTimeZoneById méthode et en fournissant l’identificateur du fuseau horaire que vous souhaitez récupérer en tant que paramètre.
S’applique à
GetSystemTimeZones(Boolean)
- Source:
- TimeZoneInfo.cs
- Source:
- TimeZoneInfo.cs
- Source:
- TimeZoneInfo.cs
- Source:
- TimeZoneInfo.cs
Retourne une ReadOnlyCollection<T> valeur contenant tous les fuseaux horaires valides de l’ordinateur local. Cette méthode ne lève pas TimeZoneNotFoundException ou 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)
Paramètres
- skipSorting
- Boolean
Si true, la collection retournée peut ne pas nécessairement être triée.
Retours
Remarques
En définissant le paramètre trueskipSorting sur , la méthode tente d’éviter le tri de la collection retournée. Cette option peut être bénéfique lorsque l’appelant ne nécessite pas de liste triée et vise à améliorer les performances.