Tüm makaleler

Unix zamanı: bilgisayarlar zamanı neden 1970'ten itibaren sayar

Unix zamanı (Unix timestamp), 1 Ocak 1970, 00:00:00 UTC'den bu yana geçen saniye sayısıdır. Bu tarihe "Unix dönemi" (Unix epoch) denir ve neredeyse her modern işletim sistemi, veritabanı ve programlama dilinin zamanı saymak için kullandığı referans noktası tam olarak budur.

Neden özellikle 1970

Tarih özel bir olay nedeniyle değil, tamamen pratik nedenlerle seçildi: 1970'lerin başında Bell Labs'deki Unix geliştiricileri o zamanki geçerli yılı kullanışlı, yuvarlak bir başlangıç noktası olarak aldılar. Bu tarihin ardında daha derin bir anlam yok.

Bu formatın bankacılık sistemlerinde bu kadar yaygın olmasının nedeni

Türkiye'deki bankacılık ve ödeme altyapısı sistemlerinde her işlem genellikle Unix zaman damgasıyla kaydedilir, çünkü bu, farklı şubeler ve veri merkezleri arasındaki olayları saat dilimi dönüşümü yapmadan doğrudan sayı olarak karşılaştırmayı ve sıralamayı kolaylaştırır.

2038 sorunu

Birçok eski sistem Unix zamanını, yalnızca 19 Ocak 2038'e kadar değerleri temsil edebilen 32 bitlik işaretli bir tam sayı olarak saklar. Bu tarihten sonra böyle bir sayı taşacaktır — bu yalnızca teorik bir sorun değil, çünkü uzun ömürlü sanayi kontrol sistemleri ve gömülü cihazlar genellikle onlarca yıl boyunca yazılım güncellemesi almadan çalışmaya devam eder.

Bu neden gereklidir

  • Loglardan veya API yanıtlarından gelen bir timestamp'i anlaşılır bir tarih ve saate dönüştürmek.
  • Takvimi manuel olarak hesaplamadan iki zaman noktası arasındaki farkı hesaplamak.
  • Timestamp'lerle çalışırken saat dilimiyle ilgili sorunları teşhis etmek.

Unix zamanı ve artık saniyeler

Unix zamanı, her günün tam olarak 86400 saniye sürdüğünü varsayar ve Dünya'nın dönüşündeki yavaşlamayı telafi etmek için zaman zaman UTC'ye eklenen artık saniyeleri (leap seconds) yok sayar. Bu, Unix zamanının bir artık saniye eklendiği anlarda teknik olarak UTC'nin tam bir yansıması olmadığı anlamına gelir — çoğu sistem, sayaçta bir sıçramayı önlemek için tek bir saniyeyi basitçe "yayar" (smear) ya da tekrarlar.

Aracı dene