Tek paragrafta Unix zamanı
Unix zamanı, epoch olarak bilinen 1 Ocak 1970 00:00:00 UTC anından bu yana geçen saniyeleri sayar. Saat dilimlerini ve yaz saatini tamamen yok sayar: herhangi bir anda Unix zamanı Dünya'nın her yerinde aynı sayıdır. Bu da onu veritabanlarında, log dosyalarında, JWT exp ve iat alanlarında, dosya değiştirilme zamanlarında, API yanıtlarında ve cron benzeri zamanlayıcılarda anları saklamak ve karşılaştırmak için doğal format yapar. Sorun şu ki 1700000000 bir insan için hiçbir şey ifade etmez; bu dönüştürücü de bunun için var. Kayıt için söyleyelim: 14 Kasım 2023, 22:13:20 UTC.
Saniyeler, milisaniyeler ve daha uzun sayılar
Farklı sistemler farklı birimlerle sayar:
- Saniye, güncel tarihler için 10 hane: Unix ve Linux araçları, PHP
time(), Pythontime.time()(kesirli kısmıyla), çoğu SQL veritabanı, JWT'ler. - Milisaniye, 13 hane: JavaScript
Date.now(), JavaSystem.currentTimeMillis(), birçok JSON API'si ve analitik olayı. - Mikrosaniye, 16 hane, ve nanosaniye, 19 hane: bazı veritabanları, Go, yüksek çözünürlüklü izleme araçları.
Araç birimi büyüklüğe göre belirler. Mutlak değeri 100.000.000.000'dan küçük her tam sayı saniye, 100.000.000.000.000'a (14 hane) kadar olanlar milisaniye, 10^17'den küçükler mikrosaniye, daha büyükler nanosaniye olarak okunur. Bu eşikler gerçekçi her durumda işe yarar: ilk eşik saniye olarak 5138 yılına, milisaniye olarak 1973 Mart başına denk gelir.
Mikrosaniye ve nanosaniye değerleri milisaniye hassasiyetine kesilir, çünkü çıktılar zaten bu kadarını gösterir. 1700000000.5 gibi kesirli girdi kabul edilmez; önce ondalık kısmı atın.
Negatif sayılar çalışır ve 1970 öncesi tarihler verir: -86400, 31 Aralık 1969'dur.
Altı çıktıyı okumak
- Unix, saniye ve Unix, milisaniye: aynı an, iki birimde.
.250gibi saat kısmı içeren bir tarih metni yapıştırdığınızda milisaniyeler korunur; saniye değeri aşağı yuvarlanır. - ISO 8601: örneğin
2023-11-14T22:13:20.000Z. Her zaman UTC'dir,Zile işaretlenir ve milisaniye hassasiyetindedir. API'ler ve JSON için en güvenli formattır, çünkü metin olarak doğru sıralanır ve her dil onu ayrıştırır. - UTC:
Expires,Last-Modifiedve çerez başlıklarında kullanılan HTTP tarih stili,Tue, 14 Nov 2023 22:13:20 GMT. - Saat diliminiz: 24 saat formatında gün/ay/yıl, ardından saat dilimi kısaltması (yoksa GMT farkı) ve tarayıcınızın bildirdiği bölge adı, örneğin
Europe/Istanbul. Bugünün farkı değil, o tarih için geçerli yaz saati uygulanır. - Göreli: "dün", "3 gün içinde" veya "2 yıl önce" gibi ifadeler. Tasarım gereği yaklaşıktır: aylar ortalama yaklaşık 30,4 gün kabul edilir ve sayfa açıkken değer güncellenir.
Bir tarihi zaman damgasına dönüştürmek
Sayı yerine bir tarih yapıştırabilirsiniz. ISO 8601 metinleri en güvenilir girdidir ve saat dilimi kurallarını bilmeye değer, çünkü saat kaymalı hataların çoğuna bunlar yol açar:
2024-05-01T12:00:00Zve2024-05-01T12:00:00+02:00kendi farklarını taşır ve belirsizlik içermez.- Saatsiz
2024-05-01, UTC gece yarısı olarak kabul edilir. 2024-05-01T12:00ve2024-05-01 12:00, yani saat içeren ama fark içermeyen bir tarih, yerel saatiniz olarak kabul edilir.
Yani yazın Berlin'deyseniz 2024-05-01 ile 2024-05-01 00:00 arasında iki saat fark vardır. Bir sunucu veya API için dönüştürürken tahmine yer bırakmamak için Z veya açık bir fark ekleyin.
May 1, 2024 12:00 gibi diğer formatlar tarayıcının tarih ayrıştırıcısına bağlıdır ve Chrome, Firefox ve Safari arasında farklı davranabilir. 01/05/2024 gibi günün önce geldiği formatlar ABD tarzında ay önce olarak okunur ya da reddedilir; bunlardan kaçının.
Bilmeye değer tuzaklar
- Artık saniyeler. Unix zamanı her günün tam olarak 86.400 saniye olduğunu varsayar. 1972'den beri eklenen 27 artık saniye sayılmaz; bu yalnızca hassas bilimsel zamanlamada önemlidir.
- 2038 yılı problemi. Unix zamanını işaretli 32 bit tamsayı olarak saklayan sistemler
2147483647değerinde taşar; bu 19 Ocak 2038, 03:14:07 UTC'dir. Görmek için bu sayıyı yapıştırın. Modern 64 bit sistemler etkilenmez, ancak eski gömülü cihazlar ve dosya formatları etkilenebilir. - Saat kayması. Bir JWT "henüz geçerli değil" veya "süresi dolmuş" diye reddedilirse,
iatveexpdeğerlerini sayfanın üstündeki canlı Şu anki Unix zamanı ile karşılaştırın. Birkaç dakikalık fark, kötü bir token'dan çok yanlış ayarlanmış bir saate işaret eder.
Bir token'ın alanlarını okumak için orta kısmını Base64 kodlayıcı ve çözücü ile çözün ve JSON'u JSON formatlayıcı ve doğrulayıcı ile düzenleyin. Dönüştürmeler tarayıcınızda, onun kendi saati ve saat dilimi ayarlarıyla çalışır.