Aracılığıyla paylaş


TimeZoneInfo.FindSystemTimeZoneById(String) Yöntem

Tanım

TimeZoneInfo Bir nesneyi tanımlayıcısına göre döndürür.

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

Parametreler

id
String

Özelliğine karşılık gelen saat dilimi tanımlayıcısı Id .

Döndürülenler

Tanımlayıcısı parametrenin id değeri olan bir nesne.

Özel durumlar

Sistemin saat dilimiyle ilgili bilgileri tutmak için yeterli belleği yok.

id parametresidirnull.

tarafından id belirtilen saat dilimi tanımlayıcısı bulunamadı. Bu, adıyla eşleşen id bir saat dilimi tanımlayıcısının mevcut olmadığı veya tanımlayıcının var olduğu ancak saat dilimi verileri içermediği anlamına gelir.

İşlem, saat dilimi bilgilerini içeren kayıt defteri anahtarından okumak için gereken izinlere sahip değil.

Saat dilimi tanımlayıcısı bulundu, ancak kayıt defteri verileri bozuk.

Örnekler

Aşağıdaki örnek, Tokyo Standart Saat dilimini almak için yöntemini kullanır FindSystemTimeZoneById . Bu TimeZoneInfo nesne daha sonra yerel saati Tokyo'daki saate dönüştürmek ve Tokyo Standart Saati mi yoksa Tokyo Yaz Saati mi olduğunu belirlemek için kullanılır.

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

Açıklamalar

Parametre, id başarılı bir eşleşmenin gerçekleşmesi için saat dilimi tanımlayıcısının uzunluğuna tam olarak karşılık gelmelidir, ancak büyük/küçük harfe duyarlı değildir; yani saat dilimi tanımlayıcılarıyla karşılaştırması id büyük/küçük harfe duyarlı değildir. Kısmi eşleşmeleri temel alan saat dilimi nesnelerini almak istiyorsanız, yöntemi tarafından GetSystemTimeZones döndürülen nesnelerin salt okunur koleksiyonuyla TimeZoneInfo çalışan özel yordamlar yazabilirsiniz.

Windows sistemlerinde, FindSystemTimeZoneById kayıt defterinin HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones dalının alt anahtar adlarına uymaya id çalışır. Linux ve macOS'ta, ICU Kitaplığı'nda bulunan saat dilimi bilgilerini kullanır. Kayıt defterinde veya kitaplıkta istediğiniz saat dilimiyle ilgili bilgiler yoksa, yönteminin aşırı yüklemelerinden CreateCustomTimeZone birini çağırarak veya gerekli saat dilimini temsil eden bir nesneyi seri durumdan çıkarmak için çağırarak FromSerializedString belirli bir TimeZoneInfo saat dilimi oluşturabilirsiniz. Ancak, bu yöntem çağrıları tarafından oluşturulan saat dilimleri sistem tanımlı saat değildir ve yöntemi kullanılarak FindSystemTimeZoneById alınamaz. Bu özel saat dilimlerine yalnızca veya FromSerializedString yöntemi çağrısı tarafından CreateCustomTimeZone döndürülen nesne başvurusu aracılığıyla erişilebilir.

.NET 7 ve önceki sürümlerde bu yöntem, her yöntem çağrısı için yeni TimeZoneInfo bir örnek döndürür. Bu, yöntemi aynı tanımlayıcıyla tekrar tekrar çağıran FindSystemTimeZoneById uygulamalarda performansı etkileyebilir. (.NET 8 ve sonraki sürümlerde bu yöntem her zaman önbelleğe alınmış TimeZoneInfo bir örnek döndürür.)

Şunlara uygulanır

Ayrıca bkz.