Yerel Zaman
Önceki Mutlak Zaman Sonraki
Yerel Zaman
Mutlak zaman, GNU C kütüphanesi işlevleri tarafından sabit bir mutlak zamanı başlangıç kabul ederek bu zamandan itibaren geçen süre olarak ifade edilir. Bu hesaplama açısından uygun olmakla birlikte, insanları düşündüğü takvim zamanıyla ilişkilendirilmesinin bir yolu yoktur. Tersine olarak yerel zaman, mutlak zamanın yıl, ay, gün, v.s. şeklinde ayrık bir ikilik gösterimidir. Yerel zaman değerleri hesaplama için elverişli olmadığı halde zaman bilgisini insanların okuyabileceği biçimde ifade etmek için elverişlidir.
Bir yerel zaman değeri daima zaman dilimi seçimine göredir ve ayrıca zaman dilimi de belirtilir.
Bu bölümdeki semboller time.h başlık dosyasında bildirilmiştir.
struct tm
veri türü
Bu veri türü bir yerel zamanı ifade etmek için kullanılır. Yapı, farklı sıralamayla da olsa en azından aşağıdaki üyeleri içermelidir:
int tm_sec
Bu üye bir dakikadan küçük tam saniyelerin sayısıdır (normalde 0'dan 59'a kadar olmakla birlikte gerçek üst sınır, eğer artık saniye desteği varsa artık saniyeleri de ifade edebilmek için 60 saniyedir).
int tm_min
Bu üye bir saatten küçük tam dakikaların sayısıdır (0'dan 59'a kadar).
int tm_hour
Bu üye geceyarısından itibaren geçen tam saatlerin sayısıdır (0'dan 23'e kadar).
int tm_mday
Bu üye ayın gününü ifade eden bir sayıdır (1'den 31'e kadar). Dikkat edin!, yapıdaki sıradan bir sayı olarak, bu üye yapının kalanı ile bağdaşmaz.
int tm_mon
Yılın başlangıcından itibaren tam ayların sayısıdır (0'dan 11'e kadar). Dikkat edin!, normalde insanlar ilk ayın (Ocak ayı) numarası olarak 1'i kullanırlar.
int tm_year
Bu, 1900'den beri geçen tam yılların sayısıdır.
int tm_wday
Bu, hafta başından (Pazar) beri geçen tam günlerin sayısıdır (0'dan 6'ya kadar).
int tm_yday
Bu, yılın başından beri geçen tam gün sayısıdır (0'dan365'e kadar).
int tm_isdst
Bu yaz saati uygulamasının geçerli olup olmadığını gösterir. Değer pozitifse uygulanacak, sıfırsa uygulanmayacak, negatifse hiç yaz saati uygulaması yapılmıyor demektir.
long int tm_gmtoff
Yerel zamanı hesaplamakta kullanılan zaman dilimini belirtir. Yaz saati uygulamasını da içererek, UTC'ye göre saniye sayısını içerir. Bu üyenin değerini UTC'nin doğusundaki saniye sayısı olarak da düşünebilirsiniz. Örneğin, Türkiye için bu değer normalde 2*60*60, yaz saati uygulaması yapılan dönemde ise 3*60*60 saniyedir. Yapının tm_gmtoff üyesi BSD'den alınmıştır, bir GNU kütüphanesi oluşumudur; kesin ISO C uyumluluğu istenen ortamda görülmez.
const char *tm_zone
Yerel zamanı hesaplamakta kullanılan zaman diliminin ismidir. Yapının bu üyesi de BSD'den alınmıştır, bir GNU kütüphanesi oluşumudur; kesin ISO C uyumluluğu istenen ortamda görülmez.
struct tm *localtime
(const time_t *zaman)
işlev
localtime işlevi, zaman ile belirtilen basit zamanı, kullanıcının belirtilmiş zaman dilimine göre ifade edilen yerel zaman gösterimine dönüştürür.
Dönüş değeri bir durağan yerel zaman yapısına bir göstericidir ve yapı içeriği sonraki ctime, gmtime veya localtime çağrılarıyla değişebilecektir. (Kütüphanede bu nesnenin içeriğini değiştirebilen başka işlev yoktur.)
zaman, bir yerel zaman olarak ifade edilemiyorsa dönüş değeri bir boş göstericidir; bu, genellikle yıl değeri int türüne sığmazsa ortaya çıkar.
localtime çağrısı bir etkiye daha sahiptir: tzname değişkenine o anki zaman dilimi bilgisi ile ilintili bir değer atar. Bkz. Zaman Dilimi Değişkenleri ve İşlevleri.
localtime işlevi çok evreli yazılımlarda büyük bir soruna yolaçar. Sonuç bir durağan tamponda döndüğünden bu tüm evreler tarafından kullanılamaz. POSIX.1c'de bu işlevin çok evreli kullanımına yönelik bir benzerinden bahsedilir.
struct tm *localtime_r
(const time_t *zaman,
 struct tm    *sonuç)
işlev
The localtime_r işlevi, localtime işlevi gibi çalışır. Bir basit zaman içeren bir değişkene gösterici alır ve onu yerel zaman gösterimine dönüştürür.
Ancak, sonuç durağan bir tampona yerleştirilmez. sonuç parametresi ile gösterilen struct tm türündeki bir nesneye yerleştirilir.
Dönüşüm başarılı olursa işlev, sonucun yazıldığı nesneye bir gösterici ile, yani sonuç ile döner.
struct tm *gmtime
(const time_t *zaman)
işlev
Bu işlev, yerel zamanı bir yerel zaman diliminden ziyade UTC'ye uyarlaması dışında localtime gibidir.
localtime işlevinde olduğu gibi sonucun bir durağan değişkene atanması sebebiyle bu işlev de sorunludur. POSIX.1c gmtime işlevi yerine sorunsuz kullanılabilen bir benzerinden bahseder.
struct tm *gmtime_r
(const time_t *zaman,
 struct tm    *sonuç)
işlev
Bu işlev localtime_r işlevine benzemekle birlikte, gmtime gibi zamanı UTC'ye göre verilmiş gibi dönüştürür.
Dönüşüm başarılı olursa işlev, sonucun yazıldığı nesneye bir gösterici ile, yani sonuç ile döner.
time_t mktime
(struct tm *yerelzaman)
işlev
mktime işlevi, bir yerel zaman yapısını basit zaman gösterimine dönüştürmekte kullanılır. Ayrıca yerel zaman yapısının içeriğini, haftanın gününü ve yılın gününü diğer tarih ve zaman elemanlarına göre doldurarak "normalleştirir".
mktime işlevi yapının tm_wday ve tm_yday üyelerini yoksayar. Mutlak zamanı saptamak için yapının diğer üyelerini kullanır. Bu nedenl yapının yoksayılan üyelerinde normaldışı değerlerin bulunması sorun oluşturmaz. mktime işlevi ayrıca yerelzaman yapısının elemanlarını da (tm_wday ve tm_yday dahil) ayarlar.
Belirtilen yerel zaman bir basit zaman olarak gösterilemiyorsa işlev, (time_t)(-1) değeri ile döner ve yerelzaman ile gösterilen yapının içeriğine dokunmaz.
mktime çağrısı ayrıca, tzname değişkenine o anki zaman dilimi bilgisi ile ilintili bir değer atar. Bkz. Zaman Dilimi Değişkenleri ve İşlevleri.
time_t timelocal
(struct tm *yerelzaman)
işlev
timelocal işlevi mktime ile aynıdır, sadece, localtime işlevinin yaptığının tersini yaptığından ismi daha kolay hatırlanacak şekilde seçilmiştir.
Taşınabilirlik Bilgisi
mktime işlevi özellikle evrensel anlamda geçerli olmakla birlikte timelocal daha az yaygındır.
time_t timegm
(struct tm *yerelzaman)
işlev
timegm işlevi girdi olarak yerel zaman dilimine bakılmaksızın UTC'ye göre bir değer alması dışında mktime işlevi gibidir.
timegm işlevi, gmtime işlevinin yaptığının tersini yapar.
Taşınabilirlik Bilgisi
mktime işlevi özellikle evrensel anlamda geçerli olmakla birlikte timegm daha az yaygındır. UTC zamanından basit zamana dönüşüm yapan çoğu taşınabilir işlev TZ ortam değişkenine UTC atar, mktime işlevi ise değişkene yerel zaman dilimini atar.
Önceki Üst Ana Başlık Sonraki
Yüksek Çözünürlüklü Zaman Başlangıç Yüksek Doğrulukta Saat
Bir Linux Kitaplığı Sayfası