Tüm makaleler

Tarih farkı: gün saymanın neden göründüğünden daha karmaşık olduğu

"05.03.2024" Türkiye'de 5 Mart anlamına gelir — ama ABD'de aynı dizi 3 Mayıs olur. Sadece bu tek format farkı, artık yıllar ve saat dilimlerinin toplamından bile daha fazla gerçek tarih farkı hatasına yol açar, çünkü "yanlış okunan" tarih yine de tamamen geçerli görünür.

GG.AA.YYYY ile AA/GG/YYYY karşılaştırması

Türkiye'de, Avrupa'nın büyük bölümünde olduğu gibi, gün önce yazılır: 05.03.2024, 5 Mart demektir. ABD'de ise ay önce gelir — aynı dizi orada 3 Mayıs anlamına gelir. Amerikan bir API'den veya tablodan gelen bir tarih Türkiye kuralına göre okunursa, hesaplanan tarih farkı hiçbir kod hatası vermeden haftalarca yanlış çıkabilir.

Belirsizliğe yer bırakmayan format: ISO 8601

2024-03-05 (yıl-ay-gün) yazımı hangi ülkede olursa olsun aynı şekilde okunur, bu yüzden API'lerde, veritabanlarında ve log dosyalarında standart haline gelmiştir. Sistemler arasında tarih alışverişinde format seçme imkânı varsa, ISO 8601 bu sorunu kalıcı olarak ortadan kaldırır.

Saat dilimleri ve gün sınırları

Tarihler sadece günü değil saati de içeriyorsa, saat dilimi farkı gün sayımını bir birim kaydırabilir: İstanbul'da saat 23:30 ve aynı anda Londra'da 21:30, hangi dilimde sayıldığına bağlı olarak farklı takvim günlerine denk gelebilir.

Bu neden gereklidir

  • Bir teslim tarihine kadar veya bir proje başlangıç tarihinden itibaren tam gün sayısını hesaplamak.
  • Bir kira sözleşmesinin, aboneliğin veya garantinin hâlâ geçerli olup olmadığını kontrol etmek.
  • Yanlış formatta okunmuş bir tarihi, bir raporu bozmadan önce yakalamak.

"Aylardaki fark"ın neden tek bir doğru cevabı yok

31 Mart'tan bir ay çıkarmak belirsiz bir sonuç verir — 31 Şubat diye bir şey yoktur, bu yüzden bazı sistemler 28 Şubat'a yuvarlar, bazıları fazla günleri 3 Mart'a taşır. Her iki yaklaşım da savunulabilir ama birbirini tutmaz — sonuç başka bir araçla uyuşmadığında bunu hatırlamakta fayda var.

Aracı dene