POSIX sistemlerde, bir kullanıcı zaman dilimini
TZ ortam değişkeni ile belirtebilir. Ortam değişkenlerine nasıl değer atandığı ile ilgili belgi almak isterseniz
Ortam Değişkenleri bölümüne bakınız. Zaman dilimine erişim için kullanılan işlevler
time.h başlık dosyasında bildirilmiştir.
Normalde TZ değişkenine bir değer atamak zorunda kalmazsınız. Eğer sistem olması gerektiği gibi yapılandırılmışsa öntanımlı zaman dilimi doğru olacaktır. Eğer bilgisayarınız farklı zaman dilimindeki bir ağa bağlıysa ve zaman diliminizin kendi zaman diliminiz değil de ağın zaman dilimi olarak raporlanmasını istiyorsanız TZ değişkenine ağın zaman dilimini atayabilirsiniz.
POSIX.1 sistemlerde TZ değişkeninin değeri üç biçimden biri olabilir. GNU C kütüphanesi ile en ortak biçim olan sonuncusunda zaman dilimi geniş bir veri tabanından yapılan bir seçimle belirtilir. İlk iki biçim ise zaman dilimi bilgisini doğrudan açıklamak için kullanılır, daha az kesin ve çok hantaldırlar. Ama POSIX.1 standardı sadece bu ilk iki biçimin ayrıntılarını belirlemiştir. Bu nedenle zaman dilimi bilgileri veritabanı desteği bulunmayan POSIX.1 sistemlerde bunlarla karşılaşabileceğinizden onlar hakkında bilgi sahibi olmanız iyi olacaktır.
İlk biçim yaz saati uygulaması yapılmayan zaman dilimlerinde kullanılır:
std dizgesi zaman diliminin ismidir. En az üç karakter uzunlukta olmalı, başlangıcında iki nokta üstüste olmamalı, içinde rakam, virgül, artı ya da - işareti bulunmamalıdır.
string specifies the name of the time zone. It must be three or more characters long and must not contain a leading colon, embedded digits, commas, nor plus and minus signs. There is no space character separating the time zone name from the far ile zaman dilimi arasında herhangi bir boşluk karakteri olmamalıdır. Bu sınırlamalar belirtimin çözümlenebilmesi için gereklidir.
fark, yerel zamanı elde etmek için UTC değerine eklenecek saat farkıdır. Sözdizimi şöyledir:
Yerel zaman dilimi ilk meridyenin batısındaysa pozitif, aksi yöndeyse negatiftir. Saatler 0 ile 23 arasında, dakika ve saniyeler ise 0 ile 59 arasına belirtilmelidir.
Örneğin, Doğu Standart Zamanını yaz saati uygulaması olmaksızın belirtmek isterseniz:
std fark yer [fark],başlangıç[/saat],bitiş[/saat]
İlk std ve fark yukarıda açıklandığı gibi standart zaman dilimini belirtir. Sonraki yer dizgesi ve fark ise yaz saati uygulama bölgesinin ismini ve saat farkını belirtir. fark belirtilmemişse bir saatlik fark öntanımlıdır.
Belirtimin kalanı yaz saatinin nasıl uygulanacağını belirtir. başlangıç yaz saatinin uygulanmaya başlayacağı zamanı, bitiş ise uygulamanın sonlandırılıp normal zamana dönülecek zamanı belirtir. Bu alanlarda şu biçimler kullanılabilir:
-
Jn
Jülyen takvimine göre gün belirtir. n, 1 ile 365 arasında bir değer alabilir. 29 Şubat, artık yıllarda bile sayılmaz.
-
n
Jülyen takvimine göre gün belirtir. n, 0 ile 365 arasında bir değer alabilir. 29 Şubat, artık yıllarda hesaba katılır.
-
Ma.h.g
aıncı ayın hıncı haftasının ginci gününü belirtir. g haftanın ilk günü Pazar olmak üzere 0 ile 6 arasında, h ise 1 ile 5 arasında olmalıdır; 1. hafta ginci günü içeren ilk hafta, 5. hafta ise ginci günü içeren son haftadır. a ise 1 ile 12 arasında olmalıdır.
saat alanı, yaz saati uygulamasının başlayacağı ve biteceği saati belirtmek için kullanılır. Verilmezse, öntanımlı olarak 02:00:00 kabul edilir.
Örnek olarak ABD'de Doğu zaman diliminde yaz saati uygulamasının nasıl belirtileceğine bakalım. UTC'ye göre saat farkı 5 saat; ilk meridyenin batısında olduğundan işareti pozitif; yaz saati uygulaması Nisan ayının ilk Pazar günü öğleden önce 2:00'da başlayıp Ekim ayının son Pazar günü öğleden önce 2:00'da sona ersin dersek, bunu şöyle belirtiriz:
EST+5EDT,M4.1.0/2,M10.5.0/2
Yaz saati uygulamasının zamanlaması bir takım karar organlarınca zaman içinde değiştirilebilir. Ancak bu biçim zamanlamanın yıldan yıla nasıl değişeceğinin belirtilebileceği hiçbir oluşuma sahip değildir. Tam doğru zaman dilimi belirtimi için en iyisi zaman dilimi bilgileri veritabanı kullanmaktır.
Üçüncü biçim ise şöyledir:
Her işletim sistemi bu biçimi farklı yorumlar; GNU C kütüphanesinde karakterler, zaman dilimi bilgilerini içeren bir dosyanın ismidir.
TZ ortam değişkenine bir değer atanmamışsa, işlem öntanımlı olarak bir zaman dilimi seçer. GNU C kütüphanesinde öntanımlı zaman dilimi
TZ=:/etc/localtime (veya GNU C kütüphanesinin derlenişine bağlı olarak,
TZ=:/usr/local/etc/localtime; bkz.
GNU C Kütüphanesinin Kurulması) gibi bir belirtimdir. Diğer C kütüphaneleri öntanımlı zaman dilimin seçerken kendi kurallarını kullanırlar ve bunlar hakkında burada pek az şey söyleyebiliriz.
karakterler bir bölü çizgisi ile başlıyorsa, bir mutlak dosya ismi gösterir; aksi takdirde kütüphane
/share/lib/zoneinfo/karakterler dosyasına bakar. The
zoneinfo dizini dünyanın farklı yerlerinde yerel zaman dilimleri hakkında bilgiler içeren veri dosyaları içerir. Bunlar, coğrafik bölge dizinleri içinde büyük şehirlerin isimlerini taşıyan dosyalardır; örneğin,
America/New_York,
Europe/London,
Asia/Hong_Kong gibi. Bu veri dosyalarını sistem yöneticisi kurar ve yerel zaman dilimini
/etc/localtime dosyasıyla belirtir. GNU C kütüphanesi, dünyanın hemen her yerindeki gönüllüler tarafından sağlanmış zaman dilimi bilgilerinden oluşturulmuş büyük bir veritabanı ile gelir.