Nedir
Unix zaman damgası, Unix epoch’u denen 1 Ocak 1970, 00:00:00 UTC’den bu yana geçen saniye sayısıdır. Aynı anda dünyanın her yerinde aynı sayıdır; API’ler, günlükler ve veritabanları bu yüzden onu kullanır. Örneğin 1700000000, 14 Kasım 2023, 22:13:20 UTC’dir (Türkiye saatiyle 15 Kasım 01:13:20).
Saniye mi milisaniye mi?
Saniye cinsinden bir zaman damgası bugün 10 basamaklıdır. JavaScript, Java ve birçok API, 13 basamaklı milisaniye kullanır. Bir tarih 1970’te ya da binlerce yıl sonrasında çıkıyorsa birim muhtemelen yanlıştır.
Çevrimiçi dönüştür
Onu Unix zaman damgası dönüştürücüye yapıştır. Saniye ya da milisaniye olduğunu algılar ve tarihi UTC’de ve kendi saat diliminde gösterir.
Kodda ve e-tablolarda
- JavaScript:
new Date(1700000000 * 1000) - Python:
datetime.fromtimestamp(1700000000, tz=timezone.utc) - Excel ya da Google E-Tablolar:
=A1/86400+TARİH(1970;1;1)(İngilizce: DATE), sonra hücreyi tarih olarak biçimlendir. Sonuç UTC’dedir; Türkiye saati için 3/24 ekle. - Mac ya da Linux terminali, şu anki zaman:
date +%s
2038 yılı sorunu
Zaman damgasını işaretli 32 bitlik bir sayı olarak saklayan sistemler 19 Ocak 2038, 03:14:07 UTC’de tükenir. Modern sistemler milyarlarca yıl yeten 64 bit kullanır.
Çözümlü örnekler
0, 1 Ocak 1970, 00:00:00 UTC’dir.86400, tam olarak bir gün sonrası, 2 Ocak 1970’tir.-86400, bir gün öncesi, 31 Aralık 1969’dur. Negatif zaman damgaları 1970’ten önceki tarihlerdir.2000000000, 18 Mayıs 2033, 03:33:20 UTC’dir.
Yaygın hatalar
- Zaman damgasının bir saat dilimi olduğunu sanmak. Yoktur. 1700000000 her yerde tek bir andır; yalnızca gösterilme biçimi saat dilimiyle değişir.
- Yerel saatten UTC gibi zaman damgası yapmak. Sonuç UTC farkın kadar, çoğu zaman tam olarak birkaç saat sapar. Dönüştürdükten sonra bilinen bir tarihi kontrol et.
- JavaScript’te aylar.
new Date(2026, 0, 15), 15 Ocak’tır: aylar 0’dan başlar. - Artık saniyeler. Unix zamanı her günü tam olarak 86.400 saniye sayar ve artık saniyeleri yok sayar; yani geçen her saniyenin sayımı değildir.