Bagikan melalui


Panduan: Mengakses objek UTC dan zona waktu lokal yang telah ditentukan sebelumnya

Kelas ini TimeZoneInfo menyediakan dua properti, Utc dan Local, yang memberi kode Anda akses ke objek zona waktu yang telah ditentukan sebelumnya. Topik ini membahas cara mengakses TimeZoneInfo objek yang dikembalikan oleh properti tersebut.

Untuk mengakses objek Waktu Universal Terkoordinasi (UTC) TimeZoneInfo

  1. Gunakan static properti (Shared dalam Visual Basic) TimeZoneInfo.Utc untuk mengakses Waktu Universal Terkoordinasi.

  2. Daripada menetapkan TimeZoneInfo objek yang dikembalikan oleh properti ke variabel objek, terus akses Waktu Universal Terkoordinasi melalui TimeZoneInfo.Utc properti.

Untuk mengakses zona waktu lokal

  1. Gunakan static properti (Shared dalam Visual Basic) TimeZoneInfo.Local untuk mengakses zona waktu sistem lokal.

  2. Daripada menetapkan TimeZoneInfo objek yang dikembalikan oleh properti ke variabel objek, terus mengakses zona waktu lokal melalui TimeZoneInfo.Local properti.

Contoh

Kode berikut menggunakan properti TimeZoneInfo.Local dan TimeZoneInfo.Utc untuk mengonversi waktu dari zona waktu Standar Timur AS dan Kanada, serta untuk menampilkan nama zona waktu ke konsol.

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

Anda harus selalu mengakses zona waktu lokal melalui TimeZoneInfo.Local properti daripada menetapkan zona waktu lokal ke TimeZoneInfo variabel objek. Demikian pula, Anda harus selalu mengakses Waktu Universal Terkoordinasi melalui TimeZoneInfo.Utc properti daripada menetapkan zona UTC ke TimeZoneInfo variabel objek. Ini mencegah TimeZoneInfo variabel objek tidak valid oleh panggilan ke TimeZoneInfo.ClearCachedData metode.

Lihat juga