Aracılığıyla paylaş


Nasıl yapılır: Ön tanımlı UTC ve yerel saat dilimi nesnelerine erişim

TimeZoneInfo sınıfı, UtcLocalkodunuz için önceden tanımlanmış saat dilimi nesnelerine erişim sağlayan ve olmak üzere iki özellik sağlar. Bu konuda, bu özellikler tarafından döndürülen nesnelere TimeZoneInfo nasıl erişılacağı açıklanır.

Eşgüdümlü Evrensel Saat (UTC) TimeZoneInfo nesnesine erişmek için

  1. static Eşgüdümlü Evrensel Saat'e erişmek için (Shared Visual Basic'te) TimeZoneInfo.Utc özelliğini kullanın.

  2. Özelliği tarafından döndürülen nesneyi bir nesne değişkenine atamak TimeZoneInfo yerine, özelliği aracılığıyla Eşgüdümlü Evrensel Saat'e erişmeye TimeZoneInfo.Utc devam edin.

Yerel saat dilimine erişmek için

  1. Yerel sistem saat dilimine static erişmek için (Shared Visual Basic'te) TimeZoneInfo.Local özelliğini kullanın.

  2. Özelliği tarafından döndürülen nesneyi bir nesne değişkenine atamak TimeZoneInfo yerine, özelliği aracılığıyla yerel saat dilimine erişmeye devam edin TimeZoneInfo.Local .

Örnek

Aşağıdaki kod, abd ve Kanada Doğu Standart saat diliminden bir saati dönüştürmek ve konsola saat dilimi adını görüntülemek için ve TimeZoneInfo.Utc özelliklerini kullanırTimeZoneInfo.Local.

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

Yerel saat dilimini bir TimeZoneInfo nesne değişkenine TimeZoneInfo.Local atamak yerine her zaman özelliği aracılığıyla yerel saat dilimine erişmeniz gerekir. Benzer şekilde, UTC bölgesini bir TimeZoneInfo nesne değişkenine TimeZoneInfo.Utc atamak yerine her zaman özelliği aracılığıyla Eşgüdümlü Evrensel Saat'e erişmeniz gerekir. Bu, nesne değişkeninin TimeZoneInfo yöntemine yapılan bir çağrı tarafından geçersiz kılınmasını TimeZoneInfo.ClearCachedData engeller.

Ayrıca bkz.