Linux sistemler /etc/localtime dosyasını baz alan GLIBC dinamik Saat Dilimlerini kullanırlar. Bu dosya genellikle /usr/share/zoneinfo dizini altındaki bir bölge bilgi dosyasına bağdır (veya kopyasıdır).
Jeofiziksel bakış açısıyla dünyada sadece 360°/15°=24 Saat Dilimi vardır. Fakat insanların kolaylığı için ve tüm politik çeşitlemelerin (Günışığından Yararlanma Zamanı gibi) uyumu için /usr/share/zoneinfo dizini altında her büyük şehir, ülke vb. için bir tane olmak üzere yüzlerce zoneinfo dosyası bulunur.
Brezilya gibi bazı ülkeler Günışığından Yaralanma Zamanı başlangıcı için belirli bir tarihe sahip değildirler. Bu, her yıl yazdan birkaç ay önce belirlenir ve aşağıdaki gibi bir metin dosyasından zic ile derlenerek oluşturulan zoneinfo dosyanızı değiştirmek zorunda kalabilirsiniz.
- Örnek 9.1. Brezilya Bölge Bilgisi metin dosyası
Örnek dosyayı
burada bulabilirsiniz.
Rule bloğu değiştireceğimiz Saat Dilimi tarih ve zamanını tanımlarken, Zone bloğunda kullanılacak Rule ilişkilendirilir. Dikkat ederseniz bölge isimleri aslında /usr/share/zoneinfo dizinindeki dosya isimleridir ve insanların kendi bölgelerini daha kolay bulmaları için aynı Saat Diliminde birçok farklı isim tanımlanmıştır.
Bu dosyanın açıklama satırları bu saat dilimlerinin
zic zoneinfo derleyici kullanarak nasıl kurulacağını açıklar (ayrıca onları da kurar). Bunu etkinleştirmek için zoneinfo dosyasını
/etc/localtime'a bağlamanız (veya kopyalamanız) gerekir. Bazı dağıtımlarda Saat Dilimini ayarlamak için daha üst seviye (ve tercih edilen) bir yol vardır.
bkz.
Saat Diliminin Ayarlanması.
/etc/localtime'ın doğru zoneinfo dosyasını göstermesini sağladıktan sonra o bölge kurallarının etkisi altındasınızdır ve Günışığından Yaralanma Zamanı (DST) değişimleri otomatik olarak yapılır -- elle yapmak zorunda değilsiniz.
Aşağıdaki bir dizi komut Linux Saat Dilimi Mekanizması dinamizmini gösterir. Dikkat ederseniz tamamı bir dakikadan az sürer.
bash$ ls -al /etc/localtime
lrwxrwxrwx 1 root root 35 May 22 2001 /etc/localtime ->
¬ /usr/share/zoneinfo/Brazil/Brasilia
bash$ date
Fri Mar 29 20:13:38 BRST 2002
bash# ln -sf /usr/share/zoneinfo/GMT /etc/localtime
bash$ date
Fri Mar 29 23:13:47 GMT 2002
bash# ln -sf /usr/share/zoneinfo/Brazil/Brasilia /etc/localtime
bash$ date
Fri Mar 29 20:14:03 BRST 2002
20:13'de varsayılan Brezilya Saat Dilimindeydim, sonra GMT'ye geçtim ve sistem zamanı 23:13 olarak değişti! Saat Diliminiz DST'ye girerse benzer bir etki göreceksiniz, fakat kurallar kendi Saat Diliminiz içerisindedir (/etc/localtime bağlantısı bu örnekte olduğu gibi değişmeyecektir).
Bu makinada çalışan bir uygulama (örn. sanalyöre-sunucu erişim kayıtları) bu değişikten etkilenecektir.
Yani geliştiriciler için tüm zaman kavramının, geçerli
zaman artı
geçerli
Saat Dilimi olduğunu hatırlamak çok önemlidir. bkz.
Bilgisayar Küresel Tarih ve Zaman Kavramı.
En sonda ise kendi doğru Saat Dilimime geçtim.