Aracılığıyla paylaş


Saat dilimine genel bakış

sınıfı, TimeZoneInfo saat dilimine duyarlı uygulamaların oluşturulmasını basitleştirir. sınıfı yerel TimeZone saat dilimi ve Eşgüdümlü Evrensel Saat (UTC) ile çalışmayı destekler. sınıfı hem TimeZoneInfo bu bölgeleri hem de kayıt defterinde önceden tanımlanmış bilgilerle ilgili herhangi bir saat dilimini destekler. Ayrıca, sistemin hiçbir bilgisine sahip olmadığı özel saat dilimlerini tanımlamak için de kullanabilirsiniz TimeZoneInfo .

Saat dilimi temelleri

Saat dilimi, aynı saatin kullanıldığı coğrafi bir bölgedir. Genellikle, ancak her zaman değil, bitişik saat dilimleri birbirinden bir saat ayrıdır. Dünyanın herhangi bir saat dilimindeki saat, Eşgüdümlü Evrensel Saat'ten (UTC) uzaklık olarak ifade edilebilir.

Dünyanın birçok saat dilimi yaz saati uygulamasını destekler. Gün ışığından yararlanma saati, ilkbaharda veya yaz başında bir saat ileri doğru ilerleterek ve yaz sonu ya da sonbahar aylarında normal (veya standart) saate geri dönerek gün ışığından en üst düzeye çıkarmaya çalışır. Standart saate ve standart saate göre yapılan bu değişiklikler, ayarlama kuralları olarak bilinir.

Belirli bir saat dilimindeki gün ışığından yararlanma saatine ve bu saat diliminden geçiş, sabit veya kayan ayarlama kuralıyla tanımlanabilir. Sabit ayarlama kuralı, gün ışığından yararlanma saati geçişinin her yıl gerçekleştiği belirli bir tarihi ayarlar. Örneğin, her yıl 25 Ekim'de gerçekleşen gün ışığından standart saate geçiş, sabit bir ayarlama kuralı izler. Çok daha yaygın olan kayan ayarlama kurallarıdır. Bu kurallar, gün ışığından yararlanma saatine veya bu saatten geçiş için belirli bir ayın belirli bir haftasının belirli bir gününü ayarlar. Örneğin, mart ayının üçüncü Pazar günü gerçekleşen standart saatten yaz saati uygulamasına geçiş, kayan ayarlama kuralını izler.

Ayarlama kurallarını destekleyen saat dilimleri için, gün ışığından yararlanma saatine geçiş iki tür anormal saat oluşturur: geçersiz saatler ve belirsiz saatler. Geçersiz bir saat, standart saatten yaz saati saatine geçiş tarafından oluşturulan var olmayan bir zamandır. Örneğin, bu geçiş belirli bir günde saat 02:00'de gerçekleşirse ve saatin 03:00'e geçmesine neden olursa, her zaman aralığı 02:00 ile 02:59:59 arasında geçersizdir. Belirsiz bir saat, tek bir saat diliminde iki farklı saatle eşlenebilen bir saattir. Gün ışığından yararlanma saatinden standart saate geçiş tarafından oluşturulur. Örneğin, bu geçiş belirli bir günde saat 02:00'de gerçekleşirse ve saatin 01:00'a değişmesine neden olursa, her zaman aralığı 01:00 ile 01:59:59 arasında standart saat veya yaz saati olarak yorumlanabilir.

Saat dilimi terminolojisi

Aşağıdaki tabloda, saat dilimleriyle çalışırken ve saat dilimi kullanan uygulamalar geliştirirken yaygın olarak kullanılan terimler tanımlenmiştir.

Süre Tanım
Ayarlama kuralı Standart saatten yaz saati uygulamasına ve gün ışığından yararlanma saatinden standart saate geçişin ne zaman gerçekleştiğini tanımlayan bir kural. Her ayarlama kuralının, kuralın ne zaman uygulandığını tanımlayan bir başlangıç ve bitiş tarihi (örneğin, ayarlama kuralı 1 Ocak 1986'dan 31 Aralık 2006'ya kadar geçerlidir), bir delta (ayarlama kuralının uygulanması sonucunda standart saatin değiştiği süre) ve ayarlama döneminde geçişlerin gerçekleştirildiği tarih ve saatle ilgili bilgiler bulunur. Geçişler sabit bir kuralı veya kayan kuralı izleyebilir.
Belirsiz zaman Tek bir saat diliminde iki farklı saatle eşlenebilen bir saat. Saat saati, örneğin bir saat diliminin gün ışığından standart saatine geçiş sırasında olduğu gibi zamanda geri ayarlandığında oluşur. Örneğin, bu geçiş belirli bir günde saat 02:00'de gerçekleşirse ve saatin 01:00'a değişmesine neden olursa, her zaman aralığı 01:00 ile 01:59:59 arasında standart saat veya yaz saati olarak yorumlanabilir.
Sabit kural Gün ışığından yararlanma saatine veya bu saatten geçiş için belirli bir tarihi ayarlayan ayarlama kuralı. Örneğin, her yıl 25 Ekim'de gerçekleşen gün ışığından standart saate geçiş, sabit bir ayarlama kuralı izler.
Kayan kural Gün ışığından yararlanma saatine veya bu saatten geçiş için belirli bir ayın belirli bir haftasının belirli bir gününü ayarlayan ayarlama kuralı. Örneğin, mart ayının üçüncü Pazar günü gerçekleşen standart saatten yaz saati uygulamasına geçiş, kayan ayarlama kuralını izler.
Geçersiz saat Standart saatten yaz saati uygulamasına geçişin yapıtı olan var olmayan bir saat. Saat diliminin standart saatinden gün ışığından yararlanma saatine geçiş gibi bir zamanda ileri doğru ayarlandığında oluşur. Örneğin, bu geçiş belirli bir günde saat 02:00'de gerçekleşirse ve saatin 03:00'e geçmesine neden olursa, her zaman aralığı 02:00 ile 02:59:59 arasında geçersizdir.
Geçiş süresi Belirli bir saat değişikliğiyle ilgili bilgiler(örneğin, gün ışığından yararlanma saatinden standart saate veya tam tersi) belirli bir saat dilimindeki değişiklik.

Time zones ve TimeZoneInfo sınıfı

.NET'te bir TimeZoneInfo nesne bir saat dilimini temsil eder. sınıfı, TimeZoneInfo bir GetAdjustmentRules nesne dizisi TimeZoneInfo.AdjustmentRule döndüren bir yöntem içerir. Bu dizinin her öğesi, belirli bir zaman aralığı için gün ışığından yararlanma saatine ve bu saatten geçiş hakkında bilgi sağlar. (Gün ışığından yararlanma saatini desteklemeyen saat dilimleri için yöntemi boş bir dizi döndürür.) Her TimeZoneInfo.AdjustmentRule nesnenin, gün ışığından yararlanma saatine ve saatine geçişin belirli tarih ve saatini tanımlayan bir DaylightTransitionStartDaylightTransitionEnd ve özelliği vardır. özelliği, IsFixedDateRule geçişin sabit mi yoksa kayan mı olduğunu gösterir.

.NET, Windows işletim sistemi tarafından sağlanan ve kayıt defterinde depolanan saat dilimi bilgilerine dayanır. Yerkürenin saat dilimlerinin sayısı nedeniyle, mevcut saat dilimlerinin tümü kayıt defterinde temsil edilmez. Ayrıca, kayıt defteri dinamik bir yapı olduğundan, önceden tanımlanmış saat dilimleri buna eklenebilir veya buradan kaldırılabilir. Son olarak, kayıt defteri mutlaka geçmiş saat dilimi verilerini içermez. Örneğin, Windows XP'de kayıt defteri yalnızca tek bir saat dilimi ayarlamaları kümesiyle ilgili veriler içerir. Windows Vista dinamik saat dilimi verilerini destekler; bu da tek bir saat diliminin belirli yıl aralıklarına uygulanan birden çok ayarlama kuralına sahip olabileceği anlamına gelir. Ancak, Windows Vista kayıt defterinde tanımlanan ve gün ışığından yararlanmayı destekleyen çoğu saat diliminde önceden tanımlanmış yalnızca bir veya iki ayarlama kuralı vardır.

sınıfının kayıt defterine TimeZoneInfo bağımlılığı, saat dilimi kullanan bir uygulamanın kayıt defterinde belirli bir saat dilimi tanımlandığından emin olamayacağı anlamına gelir. Sonuç olarak, belirli bir saat dilimini (yerel saat dilimi veya UTC'yi temsil eden saat dilimi dışında) örnekleme girişimi özel durum işlemeyi kullanmalıdır. Ayrıca, gerekli TimeZoneInfo bir nesnenin kayıt defterinden örneği oluşturulamazsa uygulamanın devam etmesi için bazı yöntemler sağlamalıdır.

Gerekli bir saat diliminin olmamasını işlemek için sınıfı, TimeZoneInfo kayıt defterinde bulunmayan özel saat dilimleri oluşturmak için kullanabileceğiniz bir CreateCustomTimeZone yöntem içerir. Özel saat dilimi oluşturma hakkında ayrıntılı bilgi için bkz . Nasıl yapılır: Ayarlama kuralları olmadan saat dilimleri oluşturma ve Nasıl yapılır: Ayarlama kurallarıyla saat dilimleri oluşturma. Ayrıca, yeni oluşturulan bir saat dilimini ToSerializedString dizeye dönüştürmek ve bunu bir veri deposuna (veritabanı, metin dosyası, kayıt defteri veya uygulama kaynağı gibi) kaydetmek için yöntemini kullanabilirsiniz. Ardından yöntemini kullanarak bu dizeyi FromSerializedString bir TimeZoneInfo nesneye geri dönüştürebilirsiniz. Ayrıntılar için bkz . Nasıl yapılır: Katıştırılmış kaynağa saat dilimlerini kaydetme ve Nasıl yapılır: Katıştırılmış bir kaynaktan saat dilimlerini geri yükleme.

Her saat dilimi UTC'den bir taban uzaklık ve mevcut ayarlama kurallarını yansıtan UTC'den uzaklık ile karakterize edildiğinden, bir saat dilimindeki bir saat başka bir saat dilimindeki saate kolayca dönüştürülebilir. Bu amaçla, TimeZoneInfo nesnesi aşağıdakiler dahil olmak üzere çeşitli dönüştürme yöntemleri içerir:

  • ConvertTimeFromUtc, UTC'yi belirlenen saat dilimindeki saate dönüştürür.

  • ConvertTimeToUtc, belirlenen bir saat dilimindeki saati UTC'ye dönüştürür.

  • ConvertTime, belirlenen bir saat dilimindeki saati başka bir belirlenen saat dilimindeki saate dönüştürür.

  • ConvertTimeBySystemTimeZoneId, belirlenen bir saat dilimindeki saati başka bir belirlenen saat dilimindeki saate dönüştürmek için parametre olarak saat dilimi tanımlayıcılarını (nesneler yerine TimeZoneInfo ) kullanır.

Saat dilimleri arasındaki saatleri dönüştürme hakkında ayrıntılı bilgi için bkz . Saat dilimleri arasında saatleri dönüştürme.

Ayrıca bkz.