Bu Araç Nedir?
Unix zaman damgası (epok zamanı olarak da bilinir), 1 Ocak 1970, 00:00:00 UTC'den bu yana geçen saniye sayısını ifade eder. Bu, bilgisayarların zaman noktalarını kaydetmek için kullandıkları standart yöntemdir: veritabanları, günlük dosyaları, API'ler ve programlama dilleri, zaman dilimi karışıklığına yol açmayan tek ve net bir sayı olduğu için bunu kullanır.
İki tür vardır: saniye (günümüzde 10 basamaklı, örn. 1720500000) ve milisaniye (13 basamaklı, JavaScript ve Java tarafından kullanılır). Bu araç, yapıştırdığınız değerin hangisi olduğunu otomatik olarak algılar.
Neden Kullanmalısınız?
- Günlüklerden, veritabanı satırlarından ve API yanıtlarından zaman damgalarını anında okuyun.
- Saniyeleri ve milisaniyeleri otomatik olarak algılar — tahminde bulunmaya gerek kalmaz.
- Yerel saati, UTC'yi, ISO 8601 formatını ve göreceli zamanı ("3 saat önce") bir arada gösterir.
- Her iki yönde de dönüştür: zaman damgası → tarih ve tarih → zaman damgası.
- Hızlı başvuru için gerçek zamanlı saat.
Nasıl Kullanılır
- Kodunu çözmek için: sol kutucuğa bir zaman damgası (örneğin 1720500000) yapıştırın ve "Dönüştür" düğmesine tıklayın.
- Sonucu yerel saat diliminizde, UTC'de, ISO 8601 formatında ve göreceli zaman olarak okuyun.
- Kodlamak için: Sağdaki kutudan bir tarih ve saat seçin ve “Dönüştür” düğmesine tıklayarak saniye ve milisaniye cinsinden zaman damgasını alın.
- Sadece güncel zaman damgasına ihtiyacınız olduğunda, sayfanın üst kısmındaki canlı saati kullanın.
Örnek
Giriş
1720500000Çıkış
Local time: 7/9/2024, 1:20:00 PM
UTC time: Tue, 09 Jul 2024 05:20:00 GMT
ISO 8601: 2024-07-09T05:20:00.000Z10 basamaklı bir değer saniye olarak, 13 basamaklı bir değer ise milisaniye olarak kabul edilir.
Pratik ipuçları
- "Yanlış saat" hatalarının giderilmesi: Bu hataların %90'ı, yanlış zaman damgalarından değil, saat dilimi görüntüleme sorunlarından kaynaklanmaktadır. Herhangi bir kodda değişiklik yapmadan önce, UTC satırını sunucu günlüklerinizle karşılaştırın (sunucular genellikle UTC'yi günlüğe kaydeder).
- Tam olarak 1970-01-01 tarihine denk gelen bir tarih, zaman damgasının 0 olduğu ya da eksik olduğu anlamına gelir — bu, gerçek bir tarih değil, klasik bir boş değer belirtisidir.
- 1970 civarında bir tarih + birkaç gün, genellikle saniyelerin bir yerlerde milisaniye olarak yorumlandığı anlamına gelir; 56.000+ yılındaki bir tarih ise bunun tam tersi anlamına gelir.
- Hesap tablolarında: Excel, 1970’ten itibaren geçen saniyeleri değil, 1900’den itibaren geçen günleri sayar. Saniye cinsinden zaman damgası elde etmek için =(A1/86400)+DATE(1970,1,1) formülünü kullanarak dönüştürün.
Gerçek kullanım senaryoları
Zaman damgalarının pratikte önem kazandığı alanlar: JWT’lerdeki ve API belirteçlerindeki son kullanma alanlarını okumak (exp/iat, Unix saniyesidir), bir kullanıcının hata raporu zamanını sunucu günlüğü satırlarıyla eşleştirmek, önbellek TTL’lerini ve cron zaman aralıklarını ayarlamak ve bir sertifikanın veya belirtecin gerçekten süresinin dolup dolmadığını kontrol etmek. "3 saat önce" gibi göreceli zaman ifadesi, tüm bunlar için en hızlı doğrulama yöntemidir.
JWT hata ayıklama işlemi o kadar yaygın ki ayrıntılı olarak açıklamaya gerek yok: Jetonun yükünü Base64 aracıyla deşifre edin, ardından “exp” değerini buraya yapıştırın — “bu jetonun süresi dolmuş mu ve ne kadar süre dolmuş?” sorusuna anında cevap alırsınız.
Unix zamanı neden bu şekilde tasarlandı?
Sabit bir başlangıç anından itibaren (yıl/ay/gün/saat yapısı yerine) tek bir artan sayıyı depolamak, kasıtlı olarak basitlik uğruna yapılan bir tercihti: iki zaman damgası, basit aritmetik işlemlerle karşılaştırılabilir veya birbirinden çıkarılabilir; takvim mantığına gerek yoktur; işte bu nedenle veritabanları, günlük formatları ve neredeyse her programlama dilinin dahili tarih gösterimi bu temele dayanır. Bu basitliğin bedeli, tam da bu aracın gidermek için var olduğu şeydir — insanlar “1970’ten bu yana geçen saniye” cinsinden düşünmezler, bu nedenle her zaman damgası, onu okuyan kişi için bir anlam ifade edebilmesi için takvim tarihine çevrilmelidir ve bu çeviri işlemi saat dilimini, hassasiyeti (saniye mi milisaniye mi) ve görüntüleme biçimini aynı anda hesaba katmalıdır.
Sıkça Sorulan Sorular
Araç, zaman damgamın saniye mi yoksa milisaniye mi olduğunu nasıl anlar?
Boyuta göre. 1.000.000.000.000 (1e12) veya daha büyük değerler milisaniye olarak kabul edilir; daha küçük değerler ise saniye olarak kabul edilir. Güncel tarihler saniye cinsinden yaklaşık 1,7 milyar, milisaniye cinsinden ise yaklaşık 1.700 milyardır; bu nedenle gerçekçi tarihler için bu iki aralık birbiriyle çakışmaz.
Zaman damgam neden beklediğimden farklı bir saati gösteriyor?
Zaman dilimleri. Zaman damgası her zaman UTC'ye göredir; “yerel saat” satırı bunu cihazınızın zaman dilimine dönüştürür. UTC satırını kaynak sisteminizin günlük kayıtlarıyla karşılaştırın — birçok sunucu günlüklerini UTC'ye göre tutar.
2038 sorunu nedir?
Zaman damgalarını işaretli 32 bitlik tamsayılar olarak depolayan sistemlerde 19 Ocak 2038 tarihinde taşma sorunu yaşanır. Modern sistemler ise 64 bitlik tamsayılar kullandığından bu durumdan etkilenmez. Bu araç, 2038’in çok ötesindeki tarihleri de işleyebilen JavaScript sayılarını kullanır.
Negatif zaman damgalarını dönüştürebilir miyim?
Evet. Negatif zaman damgaları, 1 Ocak 1970'ten önceki tarihleri ifade eder — örneğin, -86400, 31 Aralık 1969'dur.
Bu dönem, artı saniyeleri içeriyor mu?
Hayır. Unix zamanı, her günün tam olarak 86.400 saniye olduğunu varsayar ve artık saniyeleri göz ardı eder — bu, aritmetik işlemleri kolaylaştırmak amacıyla kasıtlı olarak yapılan bir basitleştirmedir.