TimeZoneInfo.FindSystemTimeZoneById(String) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengembalikan TimeZoneInfo objek berdasarkan pengidentifikasinya.
public:
static TimeZoneInfo ^ FindSystemTimeZoneById(System::String ^ id);
public static TimeZoneInfo FindSystemTimeZoneById (string id);
static member FindSystemTimeZoneById : string -> TimeZoneInfo
Public Shared Function FindSystemTimeZoneById (id As String) As TimeZoneInfo
Parameter
Mengembalikan
Objek yang pengidentifikasinya adalah nilai id
parameter .
Pengecualian
Sistem tidak memiliki cukup memori untuk menyimpan informasi tentang zona waktu.
Parameternya id
adalah null
.
Pengidentifikasi zona waktu yang ditentukan oleh id
tidak ditemukan. Ini berarti bahwa pengidentifikasi zona waktu yang namanya cocok id
tidak ada, atau bahwa pengidentifikasi ada tetapi tidak berisi data zona waktu apa pun.
Proses ini tidak memiliki izin yang diperlukan untuk membaca dari kunci registri yang berisi informasi zona waktu.
Pengidentifikasi zona waktu ditemukan, tetapi data registri rusak.
Contoh
Contoh berikut menggunakan FindSystemTimeZoneById metode untuk mengambil zona Waktu Standar Tokyo. Objek ini TimeZoneInfo kemudian digunakan untuk mengonversi waktu setempat ke waktu di Tokyo dan untuk menentukan apakah itu Tokyo Standard Time atau Tokyo Daylight Time.
using System;
public class Example
{
public static void Main()
{
// Get time in local time zone
DateTime thisTime = DateTime.Now;
Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(thisTime) ?
TimeZoneInfo.Local.DaylightName : TimeZoneInfo.Local.StandardName, thisTime);
Console.WriteLine(" UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local));
// Get Tokyo Standard Time zone
TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
DateTime tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst);
Console.WriteLine("Time in {0} zone: {1}", tst.IsDaylightSavingTime(tstTime) ?
tst.DaylightName : tst.StandardName, tstTime);
Console.WriteLine(" UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst));
}
}
// The example displays output like the following when run on a system in the
// U.S. Pacific Standard Time zone:
// Time in Pacific Standard Time zone: 12/6/2013 10:57:51 AM
// UTC Time: 12/6/2013 6:57:51 PM
// Time in Tokyo Standard Time zone: 12/7/2013 3:57:51 AM
// UTC Time: 12/6/2013 6:57:51 PM
open System
// Get time in local time zone
let thisTime = DateTime.Now
printfn $"Time in {if TimeZoneInfo.Local.IsDaylightSavingTime thisTime then TimeZoneInfo.Local.DaylightName else TimeZoneInfo.Local.StandardName} zone: {thisTime}"
printfn $" UTC Time: {TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local)}"
// Get Tokyo Standard Time zone
let tst = TimeZoneInfo.FindSystemTimeZoneById "Tokyo Standard Time"
let tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst)
printfn $"Time in {if tst.IsDaylightSavingTime tstTime then tst.DaylightName else tst.StandardName} zone: {tstTime}"
printfn $" UTC Time: {TimeZoneInfo.ConvertTimeToUtc(tstTime, tst)}"
// The example displays output like the following when run on a system in the
// U.S. Pacific Standard Time zone:
// Time in Pacific Standard Time zone: 12/6/2013 10:57:51 AM
// UTC Time: 12/6/2013 6:57:51 PM
// Time in Tokyo Standard Time zone: 12/7/2013 3:57:51 AM
// UTC Time: 12/6/2013 6:57:51 PM
Module Example
Public Sub Main()
' Get time in local time zone
Dim thisTime As Date = Date.Now
Console.WriteLine("Time in {0} zone: {1}", IIf(TimeZoneInfo.Local.IsDaylightSavingTime(thisTime),
TimeZoneInfo.Local.DaylightName, TimeZoneInfo.Local.StandardName), thisTime)
Console.WriteLine(" UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local))
' Get Tokyo Standard Time zone
Dim tst As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time")
Dim tstTime As Date = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst)
Console.WriteLine("Time in {0} zone: {1}", IIf(tst.IsDaylightSavingTime(tstTime),
tst.DaylightName, tst.StandardName), tstTime)
Console.WriteLine(" UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst))
End Sub
End Module
' The example displays output like the following when run on a system in the U.S.
' Pacific Standard Time zone:
' Time in Pacific Standard Time zone: 12/6/2013 10:57:51 AM
' UTC Time: 12/6/2013 6:57:51 PM
' Time in Tokyo Standard Time zone: 12/7/2013 3:57:51 AM
' UTC Time: 12/6/2013 6:57:51 PM
Keterangan
Parameter id
harus sesuai persis dengan panjang pengidentifikasi zona waktu, tetapi tidak dalam kasus, agar kecocokan berhasil terjadi; artinya, perbandingan id
dengan pengidentifikasi zona waktu tidak peka huruf besar/kecil. Jika Anda ingin mengambil objek zona waktu berdasarkan kecocokan parsial, Anda dapat menulis prosedur kustom yang berfungsi dengan kumpulan TimeZoneInfo objek baca-saja yang dikembalikan oleh GetSystemTimeZones metode .
Pada sistem Windows, FindSystemTimeZoneById
mencoba mencocokkan id
dengan nama subkuntang dari cabang HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones registri. Di Linux dan macOS, ia menggunakan informasi zona waktu yang tersedia di Pustaka ICU. Jika registri CreateCustomTimeZone atau pustaka tidak memiliki informasi untuk zona waktu yang Anda inginkan, Anda dapat membuat zona waktu tertentu baik dengan memanggil salah satu kelebihan beban metode atau dengan memanggil FromSerializedString untuk mendeserialisasi TimeZoneInfo objek yang mewakili zona waktu yang diperlukan. Namun, zona waktu yang dibuat oleh panggilan metode ini bukan waktu yang ditentukan sistem dan tidak dapat diambil menggunakan FindSystemTimeZoneById metode . Zona waktu kustom ini hanya dapat diakses melalui referensi objek yang dikembalikan oleh CreateCustomTimeZone panggilan metode atau FromSerializedString .
Di .NET 7 dan versi yang lebih lama, metode ini mengembalikan instans baru TimeZoneInfo untuk setiap panggilan metode. Ini mungkin berdampak pada performa dalam aplikasi yang memanggil FindSystemTimeZoneById
metode berulang kali dengan pengidentifikasi yang sama. (Dalam .NET 8 dan versi yang lebih baru, metode ini selalu mengembalikan instans yang di-cache TimeZoneInfo .)