Unix zaman damgasını tarihe, tarihi zaman damgasına dönüştürmek
Yayımlanma: · Güncellenme: 2 dk okuma
Bir Unix zaman damgası, evrensel saatle 1 Ocak 1970 gece yarısından beri geçen zamanı sayar. İki soru ortaya çıkan tarihi belirler: sayının birimi ve sonucu okuduğunuz saat dilimi.
Bir referans değer
Unix zaman damgası dönüştür aynı anın üç okumasını verir. 1700000000 için, Paris saatine ayarlı bir tarayıcıyla:
| Okuma | Sonuç |
|---|---|
| UTC tarihi | Tue, 14 Nov 2023 22:13:20 GMT |
| Yerel tarih | 14 Kasım 2023, 23:13:20 UTC+1 |
| ISO | 2023-11-14T22:13:20.000Z |
Yerel saat tarayıcının saat dilimini izler: Paris’te kışın bir saat fazla. Aynı zaman damgası tek bir andır, iki saat diliminde okunmuş.
Birim rakam sayısından tanınır
Varsayılan ayar birimi sayının uzunluğundan tanır. Aşağıdaki üç değer, hassasiyet dışında aynı anı belirtir.
| Sayı | Rakamlar | Tanınan birim | Elde edilen an |
|---|---|---|---|
| 1700000000 | 10 | Saniye | 14 Kas 2023, 22:13:20 UTC |
| 1700000000000 | 13 | Milisaniye | 14 Kas 2023, 22:13:20 UTC |
| 1700000000123456 | 16 | Mikrosaniye | 14 Kas 2023, 22:13:20.123 UTC |
Kural: 11 rakama kadar saniye; 12 ile 14 arası milisaniye; 15 ve 16 mikrosaniye. “Milisaniye” ayarı o birimi zorlar.
Kuralın tuzağı
Birim uzunluktan çıkarıldığından, belirsiz bir değer tek bir yönde okunur: 10000000000 (11 rakam) 20 Kasım 2286, 100000000000 (12 rakam) 3 Mart 1973 verir. Mart 1973’ten önceki bir milisaniye zaman damgası 11 rakam veya daha azına sahiptir ve saniye olarak okunurdu: o zaman “milisaniye” ayarını zorlayın.
1970 öncesi değerler ve 2038 sınırı
Negatif bir sayı 1970’ten önceki bir anı belirtir: −1, 31 Aralık 1969 23:59:59 UTC; 0, 1 Ocak 1970 gece yarısı verir.
2147483647 sayısı, işaretli 32 bitlik bir tam sayının taşıyabileceği en büyük sayıdır: 19 Ocak 2038 03:14:07 UTC verir. Sonraki sayı, 2147483648, 03:14:08 verir: araç sınırsız devam eder ama zamanı 32 bitte saklayan bir sistem edemez.
Bir tarihi zaman damgasına dönüştürmek
Bir sayı yerine bir tarih girin: araç zaman damgasını saniye ve milisaniye cinsinden verir.
| Girdi | Saniye cinsinden zaman damgası | Okuma |
|---|---|---|
| 2026-01-01 | 1767225600 | Evrensel saatle gece yarısı, saat dilimi verilmedi |
| 2026-01-01T10:30:00+01:00 | 1767259800 | Paris’te 10:30, yani evrensel saatle 09:30 |
| 2024-02-29 | 1709164800 | Artık yıl kabul edildi |
Saat dilimi olmayan bir tarih yerel saatte değil, evrensel saatte okunur: araç bunu sonuçta söyler. 30 Şubat 2026 gibi var olmayan bir tarih bir mesajla reddedilir.
Sık yapılan hatalar
- Milisaniyeyi saniye olarak okumak: tarih binlerce yıl fazla uzağa düşer.
- Saat dilimini unutmak: yerel olarak okunup sonra evrensel olarak gönderilen bir tarih bir veya daha fazla saat kayar.
- Yerel saati düşünerek saat dilimsiz bir tarih yazmak, oysa UTC olarak okunacaktır.
İki tarih arasındaki günleri saymak için İki tarih arasındaki günleri saymak rehberine bakın.
Bir dönüşümü kontrol etmek
- Cihaza bağlı olmayan UTC satırını yeniden okuyun.
- Sonucun ilk satırında bildirilen birimi kontrol edin.
- Elde edilen tarihi geri dönüştürün: başlangıçtaki sayıyı bulmalısınız.
