Delen via


Procedure: Toegang krijgen tot de vooraf gedefinieerde UTC- en lokale tijdzoneobjecten

De TimeZoneInfo klasse biedt twee eigenschappen Utc en Local, die uw code toegang geven tot vooraf gedefinieerde tijdzoneobjecten. In dit onderwerp wordt beschreven hoe u toegang krijgen tot de TimeZoneInfo objecten die door deze eigenschappen worden geretourneerd.

Het object Coordinated Universal Time (UTC) TimeZoneInfo openen

  1. Gebruik de static eigenschap (Shared in Visual Basic) TimeZoneInfo.Utc voor toegang tot Coordinated Universal Time.

  2. In plaats van het TimeZoneInfo object dat door de eigenschap wordt geretourneerd, toe te wijzen aan een objectvariabele, blijft u toegang krijgen tot Coordinated Universal Time via de TimeZoneInfo.Utc eigenschap.

Toegang tot de lokale tijdzone

  1. Gebruik de static eigenschap (Shared in Visual Basic) TimeZoneInfo.Local om toegang te krijgen tot de tijdzone van het lokale systeem.

  2. In plaats van het TimeZoneInfo object dat door de eigenschap wordt geretourneerd, toe te wijzen aan een objectvariabele, blijft u toegang krijgen tot de lokale tijdzone via de TimeZoneInfo.Local eigenschap.

Opmerking

In de volgende code worden de TimeZoneInfo.Local en TimeZoneInfo.Utc eigenschappen gebruikt om een tijd te converteren van de Tijdzone Vs en Canada Eastern Standard, en om de tijdzonenaam weer te geven in de console.

// Create Eastern Standard Time value and TimeZoneInfo object
DateTime estTime = new DateTime(2007, 1, 1, 00, 00, 00);
string timeZoneName = "Eastern Standard Time";
try
{
    TimeZoneInfo est = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName);

    // Convert EST to local time
    DateTime localTime = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Local);
    Console.WriteLine("At {0} {1}, the local time is {2} {3}.",
            estTime,
            est,
            localTime,
            TimeZoneInfo.Local.IsDaylightSavingTime(localTime) ?
                      TimeZoneInfo.Local.DaylightName :
                      TimeZoneInfo.Local.StandardName);

    // Convert EST to UTC
    DateTime utcTime = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Utc);
    Console.WriteLine("At {0} {1}, the time is {2} {3}.",
            estTime,
            est,
            utcTime,
            TimeZoneInfo.Utc.StandardName);
}
catch (TimeZoneNotFoundException)
{
    Console.WriteLine("The {timeZoneName} zone cannot be found in the registry.");
}
catch (InvalidTimeZoneException)
{
    Console.WriteLine("The registry contains invalid data for the {timeZoneName} zone.");
}

// The example produces the following output to the console:
//    At 1/1/2007 12:00:00 AM (UTC-05:00) Eastern Time (US & Canada), the local time is 1/1/2007 12:00:00 AM Eastern Standard Time.
//    At 1/1/2007 12:00:00 AM (UTC-05:00) Eastern Time (US & Canada), the time is 1/1/2007 5:00:00 AM UTC.

' Create Eastern Standard Time value and TimeZoneInfo object      
Dim estTime As Date = #01/01/2007 00:00:00#
Dim timeZoneName As String = "Eastern Standard Time"
Try
    Dim est As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZoneName)

    ' Convert EST to local time
    Dim localTime As Date = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Local)
    Console.WriteLine("At {0} {1}, the local time is {2} {3}.", _
            estTime, _
            est, _
            localTime, _
            IIf(TimeZoneInfo.Local.IsDaylightSavingTime(localTime), _
                TimeZoneInfo.Local.DaylightName, _
                TimeZoneInfo.Local.StandardName))

    ' Convert EST to UTC
    Dim utcTime As Date = TimeZoneInfo.ConvertTime(estTime, est, TimeZoneInfo.Utc)
    Console.WriteLine("At {0} {1}, the time is {2} {3}.", _
            estTime, _
            est, _
            utcTime, _
            TimeZoneInfo.Utc.StandardName)
Catch e As TimeZoneNotFoundException
    Console.WriteLine("The {0} zone cannot be found in the registry.", _
                      timeZoneName)
Catch e As InvalidTimeZoneException
    Console.WriteLine("The registry contains invalid data for the {0} zone.", _
                      timeZoneName)
End Try

U moet altijd toegang krijgen tot de lokale tijdzone via de TimeZoneInfo.Local eigenschap in plaats van de lokale tijdzone toe te wijzen aan een TimeZoneInfo objectvariabele. Op dezelfde manier moet u altijd toegang krijgen tot Coordinated Universal Time via de TimeZoneInfo.Utc eigenschap in plaats van de UTC-zone toe te wijzen aan een TimeZoneInfo objectvariabele. Hiermee voorkomt u dat de TimeZoneInfo objectvariabele ongeldig wordt gemaakt door een aanroep naar de TimeZoneInfo.ClearCachedData methode.

Zie ook