Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Belirsiz bir saat, birden fazla Eşgüdümlü Evrensel Saat 'e (UTC) eşlenen bir zamandır. Saat ayarı, bir saat diliminin yaz saatinden standart saatine geçişi sırasında olduğu gibi, geri alındığında gerçekleşir. Belirsiz bir zamanı işlerken aşağıdakilerden birini yapabilirsiniz:
Saatin UTC'ye nasıl eş olduğu hakkında bir varsayımda bulunın. Örneğin, belirsiz bir saatin her zaman saat diliminin standart saatinde ifade edildiği varsayılabilir.
Belirsiz saat, kullanıcının girdiği bir veri öğesiyse, belirsizliği çözmek için bunu kullanıcıya bırakabilirsiniz.
Bu konu, bir belirsiz zamanı, saat diliminin standart zamanını temsil ettiğini varsayarak nasıl çözeceğinizi gösterir.
Belirsiz bir saati bir saat diliminin standart saatiyle eşlemek için
IsAmbiguousTime Saatin belirsiz olup olmadığını belirlemek için yöntemini çağırın.
Eğer saat belirsizse, saat diliminin BaseUtcOffset özelliğinden döndürülen TimeSpan nesnesinden saati çıkartın.
UTC tarih ve saat değerinin Kind özelliğini DateTimeKind.Utc olarak ayarlamak için
staticyöntemini (SharedVisual Basic .NET'te) çağırın.
Örnek
Aşağıdaki örnekte, yerel saat diliminin standart saatini temsil ettiği varsayılarak belirsiz bir saatin UTC'ye nasıl dönüştürüldüğü gösterilmektedir.
private static DateTime ResolveAmbiguousTime(DateTime ambiguousTime)
{
// Time is not ambiguous
if (!TimeZoneInfo.Local.IsAmbiguousTime(ambiguousTime))
{
return ambiguousTime;
}
// Time is ambiguous
else
{
DateTime utcTime = DateTime.SpecifyKind(ambiguousTime - TimeZoneInfo.Local.BaseUtcOffset,
DateTimeKind.Utc);
Console.WriteLine("{0} local time corresponds to {1} {2}.",
ambiguousTime, utcTime, utcTime.Kind.ToString());
return utcTime;
}
}
Private Function ResolveAmbiguousTime(ambiguousTime As Date) As Date
' Time is not ambiguous
If Not TimeZoneInfo.Local.IsAmbiguousTime(ambiguousTime) Then
Return TimeZoneInfo.ConvertTimeToUtc(ambiguousTime)
' Time is ambiguous
Else
Dim utcTime As Date = DateTime.SpecifyKind(ambiguousTime - TimeZoneInfo.Local.BaseUtcOffset, DateTimeKind.Utc)
Console.WriteLine("{0} local time corresponds to {1} {2}.", ambiguousTime, utcTime, utcTime.Kind.ToString())
Return utcTime
End If
End Function
Örnek, ona geçirilen değerin ResolveAmbiguousTime belirsiz olup olmadığını belirleyen adlı DateTime bir yöntemden oluşur. Değer belirsizse, yöntemi karşılık gelen UTC saatini temsil eden bir DateTime değer döndürür. yöntemi, yerel saat dilimi BaseUtcOffset özelliğinin değerini yerel saatten çıkararak bu dönüştürmeyi işler.
Genellikle belirsiz bir zaman, belirsiz zamanın olası UTC sapmalarını içeren bir nesneler dizisini almak için GetAmbiguousTimeOffsets yöntemi çağrılarak TimeSpan işlenir. Ancak bu örnek, belirsiz bir saatin her zaman saat diliminin standart saatiyle eşlenmesi gerektiği şeklinde rastgele bir varsayımda bulunur. özelliği UTC BaseUtcOffset ile saat diliminin standart saati arasındaki uzaklığı döndürür.
Bu örnekte, yerel saat dilimine yapılan tüm başvurular özelliği aracılığıyla TimeZoneInfo.Local yapılır; yerel saat dilimi hiçbir zaman bir nesne değişkenine atanmamaktadır. Yöntemine yapılan bir çağrı, yerel saat diliminin TimeZoneInfo.ClearCachedData atandığı tüm nesneleri geçersiz kıldığından bu önerilen bir uygulamadır.