Nasıl yapılır: Ayarlama kuralları olmadan saat dilimleri oluşturma

Bir uygulamanın gerektirdiği kesin saat dilimi bilgileri belirli bir sistemde çeşitli nedenlerle mevcut olmayabilir:

  • Saat dilimi hiçbir zaman yerel sistemin kayıt defterinde tanımlanmadı.

  • Saat dilimiyle ilgili veriler değiştirildi veya kayıt defterinden kaldırıldı.

  • Saat dilimi mevcut ancak belirli bir tarihi dönem için saat dilimi ayarlamaları hakkında doğru bilgiye sahip değil.

Bu gibi durumlarda, uygulamanızın CreateCustomTimeZone gerektirdiği saat dilimini tanımlamak için yöntemini çağırabilirsiniz. Ayarlama kuralları olan veya olmayan bir saat dilimi oluşturmak için bu yöntemin aşırı yüklemelerini kullanabilirsiniz. Saat dilimi gün ışığından yararlanma saatini destekliyorsa, düzeltmeleri sabit veya kayan ayarlama kurallarıyla tanımlayabilirsiniz. (Bu terimlerin tanımları içinSaat dilimine genel bakış.)

Önemli

yöntemi çağrılarak CreateCustomTimeZone oluşturulan özel saat dilimleri kayıt defterine eklenmez. Bunun yerine, bunlara yalnızca yöntem çağrısı tarafından CreateCustomTimeZone döndürülen nesne başvurusu aracılığıyla erişilebilir.

Bu konu başlığında, ayarlama kuralları olmadan bir saat diliminin nasıl oluşturulacağı gösterilmektedir. Yaz saati ayarlama kurallarını destekleyen bir saat dilimi oluşturmak için bkz . Nasıl yapılır: Ayarlama kurallarıyla saat dilimleri oluşturma.

Ayarlama kuralları olmadan saat dilimi oluşturmak için

  1. Saat diliminin görünen adını tanımlayın.

    Görünen ad, saat diliminin Eşgüdümlü Evrensel Saat'ten (UTC) uzaklığının parantez içinde yer aldığı ve ardından saat dilimini, saat dilimindeki şehirlerden birini veya daha fazlasını ya da saat dilimindeki bir veya daha fazla ülkeyi veya bölgeyi tanımlayan bir dizenin takip ettiği oldukça standart bir biçimi izler.

  2. Saat diliminin standart saatinin adını tanımlayın. Bu dize genellikle saat dilimi tanımlayıcısı olarak da kullanılır.

  3. Saat diliminin standart adından farklı bir tanımlayıcı kullanmak istiyorsanız saat dilimi tanımlayıcısını tanımlayın.

  4. Utc'den saat diliminin uzaklığını tanımlayan bir TimeSpan nesne örneği oluşturma. UTC'den sonraki saatlere sahip saat dilimlerinin uzaklığı pozitif olur. UTC'den önceki saatlere sahip saat dilimlerinin uzaklığı negatif olur.

  5. Yeni saat dilimini TimeZoneInfo.CreateCustomTimeZone(String, TimeSpan, String, String) örneklemek için yöntemini çağırın.

Örnek

Aşağıdaki örnek, ayarlama kuralları olmayan Mawson, Antarktika için özel bir saat dilimi tanımlar.

string displayName = "(GMT+06:00) Antarctica/Mawson Time";
string standardName = "Mawson Time";
TimeSpan offset = new TimeSpan(06, 00, 00);
TimeZoneInfo mawson = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName);
Console.WriteLine("The current time is {0} {1}",
                  TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.Local, mawson),
                  mawson.StandardName);
Dim displayName As String = "(GMT+06:00) Antarctica/Mawson Time"
Dim standardName As String = "Mawson Time"
Dim offset As TimeSpan = New TimeSpan(06, 00, 00)
Dim mawson As TimeZoneInfo = TimeZoneInfo.CreateCustomTimeZone(standardName, offset, displayName, standardName)
Console.WriteLine("The current time is {0} {1}", _
                  TimeZoneInfo.ConvertTime(Date.Now, TimeZoneInfo.Local, mawson), _
                  mawson.StandardName)

özelliğine atanan dize, saat diliminin DisplayName UTC'den uzaklığının ardından saat diliminin kolay açıklamasının yer aldığı standart bir biçimi izler.

Kod derleme

Bu örnek şunları gerektirir:

  • Aşağıdaki ad alanlarının içeri aktarılacağı:

    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    
    Imports System.Collections.Generic
    Imports System.Collections.ObjectModel
    
    

Ayrıca bkz.