Skip to content

Glossary

Unix zaman damgası

Unix epoch’tan bu yana geçen saniyeler

By Published Updated

Bir Unix zaman damgası (ya da POSIX zamanı veya epoch’tan bu yana saniyeler), artık saniyeleri yok sayarak 1970-01-01 00:00:00 UTC’den bu yana geçen saniye sayısıdır. 2026-05-16 itibarıyla Unix zaman damgası yaklaşık 1.779.000.000’dur.

Bu biçimin bilgisayarda neden hâkim olduğu:

  • Tek bir tam sayıdır. Dahili saat dilimi, takvim, yerel ayar veya yaz saati uygulaması belirsizliği yoktur.
  • Zaman aritmetiği önemsizdir — saniye cinsinden süre elde etmek için iki zaman damgasını çıkarın.
  • Sayı olarak sıralanabilir. Veritabanı dizinleri ve zaman serisi sorguları karmaşık karşılaştırıcılara ihtiyaç duymaz.
  • Depolama ve kablo üzerinde kompakttır.

Karşılaşacağınız üç çeşit:

  • Saniyeler. Orijinal. 1700000000 = 14 Kasım 2023 22:13:20 UTC.
  • Milisaniyeler. JavaScript’in Date.now() bunu döndürür. Saniye değerini 1000 ile çarpın.
  • Mikrosaniyeler / nanosaniyeler. Yüksek çözünürlüklü telemetri, dağıtılmış izler. Postgres’un timestamptz’si mikrosaniye depolar.

İki bilinen sorun:

  • 2038 Yılı (Y2K38). 32 bitlik işaretli bir tam sayı olan saniyeler, 2038-01-19 tarihinde 03:14:07 UTC’de taşar. Modern sistemler 64 bit kullanır (~292 milyar yıl için iyidir); eski gömülü sistemler kullanmıyor olabilir.
  • Artık saniyeler. UTC, Dünya’nın dönüşüyle senkronize kalmak için zaman zaman artık saniyeler ekler. Unix zamanı bunları yoksayar — artık saniye anındaki zaman damgası belirsizdir. Çoğu üretim sistemi artık saniyeyi saatler içinde yayan bir düzeltme (Google, AWS) kullanır.

Unix zaman damgalarını okunabilir tarihlere dönüştürmek (ve geri) için bir tarih kütüphanesine aktarın. Duvar saati zamanına dönüştürmek her zaman bir saat dilimi seçimi gerektirir — aynı an, hangi dilimdeki görüntülediğinize bağlı olarak “NYC’de 15:00” ve “Tokyo’da gece yarısı”dır. Saat dilimi dönüştürücümüze bakın.

İşletim sistemlerinin 32 bit time_t’den nasıl geçiş yaptığı: Linux, 64 bit time_t’yi 2020’de (kernel 5.6+) standart kernel ABI’si olarak benimsedi ve glibc 2.32 (2020) bunu kullanıcı alanına sundu. NetBSD 2012’de, OpenBSD 2014’te bu geçişi yaptı. FreeBSD 2024’te takip etti. Geri kalan geciken yüzeyler, sabitlenmiş eski kernel’ler çalıştıran gömülü sistemler, kablo formatlarında 32 bit zaman damgalarını sabit kodlayan belirli zincir üstü protokoller (Bitcoin’in blok başlığı 32 bit Unix zaman damgası içerir; imzasız taşmanın meydana geleceği ~2106’da sorunlu olacak) ve eski dosya biçimleridir (ZIP arşivleri 1980 epoch’lu 32 bit DOS zaman damgaları kullanır; tar 32 bit Unix zaman damgaları kullanır). Zor iş bunları bulmak ve düzeltmektir; kernel tarafı büyük ölçüde tamamlandı. Referans: POSIX.1-2017 §4.16 — Epoch’tan Bu Yana Saniyeler.

Çalışılmış örnek

1700000000’u insan tarafından okunabilir UTC tarihine dönüştürün. Saniyelerden bölerek ve modülo alarak aşağıya inin: 1.700.000.000 / 86400 = 19.675,93 gün 1970-01-01’den bu yana. 19.675. gün 2023-11-14’tür (takvim aritmetiği). Kesirli 0,93 günü × 86.400 = 80.000 saniye = 22:13:20. Yani 1700000000 = 2023-11-14T22:13:20Z. JavaScript’te doğrulayın: new Date(1700000000 * 1000).toISOString()"2023-11-14T22:13:20.000Z". Tokyo’da (UTC+9) görüntülemek için: 9 saat ekleyin = 2023-11-15T07:13:20+09:00. Aynı an, farklı duvar saati. Klasik hata: kod tabanının geri kalanının saniye olarak ele aldığı bir sütuna new Date().getTime() (milisaniye) depolamak — her zaman damgası görüntülendiğinde 55.000+ yıl olarak okunur.

Ne zaman ve neden önem taşır

İki sistem zaman verisi değiş tokuş ettiğinde — ön uçtan arka uca, veritabanından ETL ardışık düzenine, mikro hizmetten mikro hizmete — Unix zaman damgaları, saat dilimi, yerel ayar, takvim veya yaz saati uygulaması belirsizliği taşımayan tek gösterimdir. Zaman damgalarını 64 bitlik bir sütunda Unix saniye veya milisaniye olarak depolayın, insan görüntüleme için yalnızca kenarda açık saat dilimi ile ISO-8601’e biçimlendirin. Savunma alışkanlığı: zaman taşıyan her sütun veya API alan adında, büyüklük mertebesini yanlış anlayan bir kod gözden geçiricisinin olamayacağı şekilde birimi kodlayın (created_at_ms, expires_at_unix_seconds). Y2038 riski, yeni sistemler için küçüktür; ancak protokol kablo biçimlerindeki ve gömülü sensörlerdeki 32 bit zaman damgaları için gerçektir — henüz 12 yıl marj varken şimdi denetleyin, yamalar acil hale geldiğinde 2037’de değil. Referans: RFC 3339 — İnternette Tarih ve Saat.

Hesap makinesini deneyin

Herhangi bir Unix zaman damgasını yerel saat diliminizde veya UTC’de okunabilir bir tarihe dönüştürün.

Unix zaman damgası dönüştürücüyü aç →

Frequently asked questions

Unix zaman damgası nedir?
Unix zaman damgası, 1970-01-01 00:00:00 UTC (Unix epoch) tarihinden bu yana geçen saniyeleri sayan bir tam sayıdır. Bilgisayarların zaman dilimlerinden veya takvim sistemlerinden bağımsız olarak anları depolaması ve değiş tokuş etmesinin standart yoludur.
Unix zaman damgası pratikte nasıl kullanılır?
JWT son kullanma talepleri (exp), HTTP önbellek başlıkları (Last-Modified), dosya sistemi değiştirme zamanları ve veritabanı olay günlüklerinin tümü Unix zaman damgaları kullanır. Bir süre elde etmek için iki zaman damgasını karşılaştırmak yalnızca çıkarma işlemi gerektirir; takvim aritmetiğine gerek yoktur.
Unix zaman damgası ile ISO 8601 tarih-saat dizesi arasındaki fark nedir?
Unix zaman damgası tek bir tam sayıdır (epoch’tan bu yana saniyeler), kompakttır ve aritmetik olarak karşılaştırması kolaydır. ISO 8601 dizesi (örn. 2026-06-01T12:00:00Z) insan tarafından okunabilir ve kendini açıklar; ancak ayrıştırma ve saat dilimi işleme gerektirir. Zaman damgaları depolama için tercih edilir; ISO dizeleri görüntüleme için.

Related

Published May 16, 2026 · Last reviewed May 31, 2026