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
Gunakan
static
properti (Shared
dalam Visual Basic) TimeZoneInfo.Utc untuk mengakses Waktu Universal Terkoordinasi.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
Gunakan
static
properti (Shared
dalam Visual Basic) TimeZoneInfo.Local untuk mengakses zona waktu sistem lokal.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.