TimeZoneInfo.FindSystemTimeZoneById(String) Metode

Definisi

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

id
String

Pengidentifikasi zona waktu, yang sesuai dengan Id properti .

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 .)

Berlaku untuk

Lihat juga