Dela via


Anvisningar: Få åtkomst till fördefinierade UTC- och lokala tidszonsobjekt

Klassen TimeZoneInfo innehåller två egenskaper, Utc och Local, som ger din kod åtkomst till fördefinierade tidszonsobjekt. I det här avsnittet beskrivs hur du kommer åt objekten TimeZoneInfo som returneras av dessa egenskaper.

Så här kommer du åt UTC-objektet (Coordinated Universal Time) TimeZoneInfo

  1. static Använd egenskapen (Shared i Visual Basic) TimeZoneInfo.Utc för att få åtkomst till Coordinated Universal Time.

  2. I stället för att tilldela objektet TimeZoneInfo som returneras av egenskapen till en objektvariabel fortsätter du att komma åt Coordinated Universal Time via TimeZoneInfo.Utc egenskapen .

Så här kommer du åt den lokala tidszonen

  1. static Använd egenskapen (Shared i Visual Basic) TimeZoneInfo.Local för att komma åt tidszonen för det lokala systemet.

  2. I stället för att tilldela objektet TimeZoneInfo som returneras av egenskapen till en objektvariabel fortsätter du att komma åt den lokala tidszonen TimeZoneInfo.Local via egenskapen.

Exempel

Följande kod använder TimeZoneInfo.Local egenskaperna och TimeZoneInfo.Utc för att konvertera en tid från tidszonen U.S. och Canadian Eastern Standard, samt för att visa tidszonsnamnet för konsolen.

// 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

Du bör alltid komma åt den lokala tidszonen TimeZoneInfo.Local via egenskapen i stället för att tilldela den lokala tidszonen till en TimeZoneInfo objektvariabel. På samma sätt bör du alltid komma åt Coordinated Universal Time via TimeZoneInfo.Utc egenskapen i stället för att tilldela UTC-zonen till en TimeZoneInfo objektvariabel. Detta förhindrar TimeZoneInfo att objektvariabeln ogiltigförklaras av ett anrop till TimeZoneInfo.ClearCachedData metoden.

Kompilera koden

Det här exemplet kräver:

  • System Att namnområdet importeras med -instruktionen using (krävs i C#-kod).

Se även