Epoch milisaniye zaman damgası nedir?
Unix epoch zaman damgası, "epoch" olarak bilinen 1970-01-01 00:00:00 UTC anından bu yana geçen süreyi sayar. Birçok programlama dili ve API (JavaScript'teki Date.now(), Java'daki System.currentTimeMillis() ve birçok JSON verisi) bu değeri saniye yerine milisaniye cinsinden ifade eder. Bu çevirici, söz konusu ham sayıyı net ve okunabilir bir UTC tarih ve saatine dönüştürür.
Çevirici nasıl kullanılır?
Milisaniye cinsinden zaman damganızı giriş kutusuna yapıştırın veya yazın ve gönderin. Araç, değeri 1000'e bölerek tam saniyeyi elde eder, ardından bu saniyeleri epoch'tan başlayarak takvime yerleştirir. Tam ISO 8601 dizesini (ör. 2023-11-14T22:13:20Z) ve bunun yanında yıl, ay, gün, saat, dakika ve saniye ayrıntısını alırsınız — hepsi UTC cinsinden olduğu için sonuç, yerel saat diliminizden etkilenmez.
Formülün açıklaması
Dönüşüm iki basit adımdan oluşur. Önce saniye = floor(ms / 1000) ile saniye altı kalan atılır. Ardından tarih = epoch + saniye ile bu saniyeler, 1 Ocak 1970 gece yarısına eklenir. Artık yıllar, değişen ay uzunlukları ve benzeri durumlar takvim mantığı tarafından otomatik olarak ele alınır.
$$\text{Date}_{\text{UTC}} = \text{Epoch}_{1970} + \frac{\text{Epoch Time (ms)}}{1000}\ \text{seconds}$$
$$\begin{gathered} \text{Date}_{\text{UTC}} = \text{Epoch}_{1970} + t_{s}\ \text{seconds} \\[1.5em] \text{where}\quad \left\{ \begin{aligned} t_{s} &= \left\lfloor \dfrac{\text{Epoch Time (ms)}}{1000} \right\rfloor \\ \text{Epoch}_{1970} &= \text{1970-01-01T00:00:00Z} \end{aligned} \right. \end{gathered}$$
Örnek hesaplama
1.700.000.000.000 ms değerini ele alalım. 1000'e böldüğümüzde 1.700.000.000 saniye elde ederiz. Bunu epoch'a eklediğimizde 2023-11-14T22:13:20Z sonucuna ulaşırız — yani 14 Kasım 2023, saat 22:13:20 UTC.
$$\frac{1{,}700{,}000{,}000{,}000}{1000} = 1{,}700{,}000{,}000\ \text{saniye}$$
$$\text{Date}_{\text{UTC}} = \text{Epoch}_{1970} + 1{,}700{,}000{,}000\ \text{saniye} = \text{2023-11-14T22:13:20Z}$$
Sıkça Sorulan Sorular
Sonuç yerel saatime göre mi? Hayır. Karışıklığı önlemek için çıktı her zaman UTC (Eşgüdümlü Evrensel Zaman) cinsindendir. Yerel saate ihtiyacınız varsa kendi saat dilimi farkınızı eklemelisiniz.
Milisaniye değil de saniye cinsinden bir değerim varsa ne yapmalıyım? Saniye cinsinden zaman damganızı girmeden önce 1000 ile çarpın veya basitçe sonuna üç sıfır ekleyin.
Bir zaman damgası neden çok ileri bir tarihte veya 1970'te görünebilir? Saniye cinsinden bir değeri milisaniye olarak girerseniz sonuç 1970 civarında çıkar; milisaniye cinsindeki bir değere fazladan sıfırlar eklerseniz de çok ileri bir tarihe düşer. Biriminizin her zaman milisaniye olduğundan emin olun.