Unix zaman damgasını tarihe çevirme aracı

Unix zaman damgasını okunabilir bir tarih ve saate dönüştürün — ya da herhangi bir tarihi Unix zaman damgasına çevirin. Saniye ve milisaniye destekler.

Bu aracı paylaş

Sitenize gömün

Unix timestamp nedir?

Unix timestamp, Unix time veya POSIX time olarak da bilinir, 1970-01-01 00:00:00 UTC tarihinden bu yana geçen saniye sayısıdır ve bu tarihe Unix epoch denir. Bir zaman noktasını tek bir tam sayı olarak temsil ettiği için depolamayı, karşılaştırmayı ve aritmetik işlemleri basitleştirdiğinden bilişim alanında yaygın olarak kullanılan bir standarttır.

JavaScript içişleyişte milisaniye cinsinden çalıştığı için Date.now() Unix timestamp'inin 1000 ile çarpılmış halini döndürür. Birçok API, veritabanı ve arka uç sistemi bunun yerine saniye kullanır. Bu araç her iki formatı kabul eder ve girdiğiniz sayının büyüklüğüne göre otomatik olarak saniye mi yoksa milisaniye mi olduğunu algılar.

Önemli Unix timestamp'leri

TimestampTarih (UTC)Not
01970-01-01 00:00:00Unix epoch
1,000,000,0002001-09-09 01:46:401 milyar saniye
2,000,000,0002033-05-18 03:33:202 milyar saniye
2,147,483,6472038-01-19 03:14:072038 problemi (32-bit maksimum)

Neden 1970?

Unix epoch'ün 1 Ocak 1970 olarak seçilmesi kısmen kural kısmen de pratik sınırlamalardan kaynaklanmıştır. Unix 1960'ların sonunda ve 1970'lerin başında Bell Labs'te geliştirilmiştir. Geliştiriciler zaman temsili için yakın tarihli, yuvarlak bir başlangıç tarihi ihtiyacı vardı. 1 Ocak 1970 yeterince yakındı ve hiçbir özel teknik anlamı yoktu — sadece uygun bir referans noktasıydı.

Diğer sistemlerde farklı epoch tarihleri mevcuttur: Windows FILETIME epoch'ü 1 Ocak 1601; GPS zamanı 6 Ocak 1980'de başladı; NTP epoch'ü 1 Ocak 1900'dür. Sistemler arasında dönüştürme yaparken her sistemin epoch'ünü bilmek gereklidir.

Saniye ve milisaniye

Orijinal Unix timestamp saniye cinsindedir. Çoğu sunucu tarafı dili ve sistem (Unix shell, Python'ın time.time(), PHP'nin time(), çoğu veritabanı) saniye kullanır. JavaScript'in Date.now() ve new Date().getTime() milisaniye döndürür. Bu uyumsuzluk, JavaScript ön uçları ile arka uç API'leri arasında iletişim kurarken yaygın bir hata kaynağıdır.

Saniye cinsinden Unix timestamp şu anda 10 haneli bir sayıdır (2023 itibariyle yaklaşık 1.700.000.000). Milisaniye cinsinden timestamp 13 haneli bir sayıdır. Hesaplayıcı girdiğiniz sayının haneli sayısına göre hangi formatı kullandığınızı algılar ve buna göre dönüştürür.

2038 problemi

Unix timestamp'lerini işaretli 32-bit tam sayı olarak depolayan sistemler yalnızca epoch'ten itibaren 2,147,483,647 saniyeye kadar olan tarihleri temsil edebilir — bu da 19 Ocak 2038'de UTC 03:14:07'dir. Bu andan sonra 32-bit işaretli tam sayı büyük bir negatif sayıya taşar ve 1901'deki bir tarihi temsil eder.

Buna bazen "Y2K38" problemi veya Unix Millennium Bug denir. Modern 64-bit sistemler etkilenmez, çünkü işaretli 64-bit tam sayı yaklaşık 292 milyar yıllık timestamp'leri temsil edebilir. Ancak gömülü sistemler, eski veritabanları ve daha eski 32-bit yazılımlar hala savunmasız olabilir. Telekomünikasyon, bankacılık ve endüstriyel kontrol sistemleri gibi birçok sektör bunu ele almak için devam eden göç çabalarına sahiptir.

Mevcut Unix timestamp nasıl alınır

Dil / ortamKomut
JavaScriptMath.floor(Date.now() / 1000)
Pythonimport time; int(time.time())
PHPtime()
Bashdate +%s
SQL (PostgreSQL)EXTRACT(EPOCH FROM NOW())::int
SQL (MySQL)UNIX_TIMESTAMP()
Gotime.Now().Unix()
RustSystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs()

Pratik kullanım alanları

API geliştirme: REST API'ları yaygın olarak created_at, updated_at ve token süresi dolma alanları için Unix timestamp'lerini kullanır. Bir timestamp saat diliminden bağımsız ve belirsizdir — yerel ayara ve biçimlendirme kurallarına bağlı olan biçimlendirilmiş tarih dizelerinin aksine.

Token süresi dolması: JWT (JSON Web Tokens) exp (süresi dolma) ve iat (verilme zamanı) talepleri için Unix timestamp'lerini kullanır. Bir token, mevcut timestamp exp değerini aştığında süresi dolar. Süresi dolma zamanını hesaplamak — "bu token 24 saat sonra süresi dolmalı" — mevcut timestamp'e 86.400 saniye eklemek gerektirir.

Cache TTL: Cache'nin süresi dolması yaygın olarak Unix timestamp'i veya şu andan itibaren saniye sayısı olarak ayarlanır. Cache sorunlarının hata ayıklanması sıklıkla depolanan süresi dolma timestamp'ini insan tarafından okunabilir bir tarihe dönüştürmeyi gerektirir.

Log analizi: Sunucu günlükleri sıklıkla Unix timestamp'lerini içerir. Bunları okunabilir tarihlere dönüştürmek, günlük girdilerini gerçek dünyadaki olaylarla ilişkilendirmenin ilk adımıdır.

Veritabanı depolaması: Timestamp'leri biçimlendirilen dizeler yerine tam sayı olarak depolamak saat dilimi dönüştürme hatalarını önler ve sıralamayı, aralık sorgularını ve aritmetiği basitleştirir. "Son 7 gündeki tüm kayıtlar" için bir sorgu WHERE created_at > (NOW_UNIX - 604800) haline gelir.