TimeZoneInfo.FindSystemTimeZoneById(String) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
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.)