Unix Zaman Damgası Nedir?
Unix zaman damgası (epoch zamanı veya POSIX zamanı olarak da bilinir), 1 Ocak 1970 günü saat 00:00:00 UTC'den — yani "Unix epoch" anından — bu yana geçen saniye sayısıdır ve artık saniyeler bu sayıma dahil edilmez. Bilgisayarların zaman dilimlerinden bağımsız olarak bir anı tek bir sayı şeklinde saklamasının evrensel yoludur. Bu araç, milisaniye cinsinden bir değeri standart Unix zaman damgasına (saniye) dönüştürür; ayrıca epoch anından bu yana geçen dakika, saat ve gün karşılıklarını da gösterir.
Nasıl Kullanılır?
Milisaniye cinsinden bir zaman değeri girin. Güncel Unix zaman damgasını ("epoch şimdi") elde etmek için içinde bulunduğunuz anı milisaniye olarak girin; varsayılan değer örnek olarak sunulmuştur. Araç bu değeri 1.000'e bölüp aşağı yuvarlayarak tam saniyeyi verir — neredeyse her API'nin, veritabanının ve programlama dilinin beklediği biçim budur.
Formülün Açıklaması
Temel dönüşüm şu şekildedir:
$$\text{Epoch} = \left\lfloor \dfrac{\text{Time (ms)}}{1000} \right\rfloor$$Milisaniye, saniyenin binde biri hassasiyetini sunar; ancak klasik Unix zaman damgası tam saniye cinsinden ölçülür, dolayısıyla aşağı yuvarlama (floor) yapıp ondalık kısmı atarız. Buradan epoch değerini 60, 3.600 ve 86.400'e bölerek sırasıyla dakika, saat ve gün sayısını elde ederiz.
$$\begin{gathered} \text{Epoch} = \left\lfloor \dfrac{\text{Time (ms)}}{1000} \right\rfloor \\[1.5em] \text{where}\quad \left\{ \begin{aligned} \text{Minutes} &= \left\lfloor \tfrac{\text{Epoch}}{60} \right\rfloor \\ \text{Hours} &= \left\lfloor \tfrac{\text{Epoch}}{3600} \right\rfloor \\ \text{Days} &= \left\lfloor \tfrac{\text{Epoch}}{86400} \right\rfloor \end{aligned} \right. \end{gathered}$$
Örnek Hesaplama
Diyelim ki güncel zaman 1.700.000.000.000 milisaniye olsun. Bunu 1.000'e böldüğümüzde 1.700.000.000 saniye çıkar — işte bu Unix zaman damgasıdır:
$$\left\lfloor \dfrac{1{,}700{,}000{,}000{,}000}{1000} \right\rfloor = 1{,}700{,}000{,}000\ \text{s}$$1.700.000.000 değerini 86.400'e bölüp aşağı yuvarladığımızda 1 Ocak 1970'ten bu yana 19.675 gün bulunur ki bu da 2023 Kasım ortasına denk gelir:
$$\left\lfloor \dfrac{1{,}700{,}000{,}000}{86{,}400} \right\rfloor = 19{,}675\ \text{gün}$$Sıkça Sorulan Sorular
Neden saniye, milisaniye değil? Orijinal Unix standardı saniye kullanır. JavaScript'in Date.now() fonksiyonu milisaniye döndürdüğü için çoğu zaman 1.000'e bölmeniz gerekir.
Zaman dilimlerini dikkate alır mı? Hayır — Unix zamanı her zaman UTC'dir. Aynı an, dünyanın her yerinde aynı zaman damgasına sahiptir.
2038 yılı sorunu nedir? Zaman damgasını işaretli 32 bitlik bir tam sayıda saklayan sistemler, 19 Ocak 2038'de taşma yaşar. Modern 64 bitlik sistemler bu sorundan etkilenmez.