Unix Zaman Damgası Dönüştürücü Nedir?
Unix zaman damgası (epoch zamanı olarak da bilinir), 1 Ocak 1970 tarihinde saat 00:00:00 UTC'den bu yana geçen saniye sayısıdır; artık saniyeler bu sayıma dahil edilmez. Bu araç, söz konusu tek bir tam sayıyı, haftanın günü de dahil olmak üzere insanların okuyabileceği bir UTC takvim tarihine ve saatine çevirir.
Nasıl Kullanılır?
Saniye cinsinden bir Unix zaman damgasını yapıştırın veya yazın (örneğin 1700000000) ve gönderin. Hesaplayıcı; UTC olarak yıl, ay, gün, saat, dakika ve saniye değerlerini, ayrıca haftanın gününü ve epoch başlangıcından bu yana geçen ham gün sayısını döndürür.
Formülün Açıklaması
Önce saniyeler ayrıştırılır: gün sayısı \(= \left\lfloor \text{ts} / 86400 \right\rfloor\) ve kalan değer günün saatini verir. Ardından gün sayısı, Howard Hinnant'ın iyi bilinen tam sayı tabanlı "days_from_civil" ters algoritmasıyla bir takvim tarihine eşlenir. Bu algoritma, artık günün bir yılın sonuna denk gelmesi ve özel durumlardan kaçınılması için yılı Mart'ta başlatacak şekilde kaydırır. Haftanın günü ise \((\text{gün} + 4) \bmod 7\) ile bulunur; çünkü 1 Ocak 1970 bir Perşembe gününe denk gelmektedir.
$$\begin{gathered} \text{Days} = \left\lfloor \frac{\text{Timestamp}}{86400} \right\rfloor, \qquad s = \text{Timestamp} \bmod 86400 \\[1.5em] \text{where}\quad \left\{ \begin{aligned} \text{Hour} &= \left\lfloor \frac{s}{3600} \right\rfloor \\ \text{Minute} &= \left\lfloor \frac{s \bmod 3600}{60} \right\rfloor \\ \text{Second} &= s \bmod 60 \\ (\text{Y},\text{M},\text{D}) &= \text{civil}(\text{Days}) \end{aligned} \right. \end{gathered}$$
Örnek Hesaplama
\(\text{ts} = 1{.}700{.}000{.}000\) için: \(\text{gün} = 19675\), \(\text{kalan} = 72800\) saniye \(= 22{:}13{:}20\). Takvim tarihi algoritması 19675. günü 2023-11-14 tarihine eşler. Yani sonuç 2023-11-14 22:13:20 UTC olur.
Sıkça Sorulan Sorular
Saat dilimlerini hesaba katıyor mu? Hayır; çıktı her zaman UTC'dir. Yerel saate çevirmek için kendi UTC farkınızı eklemeniz gerekir. (Türkiye için saat dilimi UTC+3'tür, yani sonuca 3 saat eklemelisiniz.)
Milisaniyeler için ne yapmalıyım? Yalnızca saniye girin. Elinizde milisaniye cinsinden bir zaman damgası varsa önce onu 1000'e bölün.
Neden artık saniyeleri dikkate almıyor? Unix zamanı, tanımı gereği artık saniyeleri zaten yok sayar; dolayısıyla bu dönüştürücü de yok sayar.