Tarihler arasındaki farkın hesaplanması: Manuel sayımdan otomasyona

Kerem Aydın·13 Temmuz 2026·⏱4 dk

İki tarih arasında kaç gün olduğunu öğrenmek için daha geç olan tarihten daha erken olanı çıkarmak gerekir. Elektronik tablolarda (Excel, Google Sheets) bu işlem, hücrelerin basitçe çıkarılması veya DATEDIF fonksiyonu ile yapılır. İş günlerinin doğru bir şekilde dikkate alınması için hafta sonları ve tatilleri hariç tutan özel fonksiyonlar kullanılır.

Aşağıda farklı durumlar için yöntemleri inceleyeceğiz: Zihinden hızlı hesaplama, ofis görevleri için formüller ve geliştiriciler için programlama kodu.

İçindekiler

Temel kavramlar: Takvim günleri ve iş günleri

Hesaplamadan önce neyin sayılacağını belirlemek önemlidir:

  1. Takvim günleri. Hafta sonları ve tatiller dahil olmak üzere tarihler arasındaki tam fark. Son kullanma tarihleri, tatil süresi veya kiralama sürelerinin hesaplanması için kullanılır.
  2. İş günleri (hafta içi). Sadece Pazartesiden Cumaya kadar (veya başka bir çalışma haftası) olan günler, tatiller hariç. Proje teslim sürelerini ve iş görevlerini değerlendirmek için gereklidir.
  3. Sınırların dahil edilmesi. Standart matematiksel hesaplama (Tarih B - Tarih A) başlangıç tarihini dahil etmez. Bir etkinliğin süresini "ilk günden son güne dahil" olarak hesaplamak istiyorsanız, sonuca 1 eklemeniz gerekir.

Excel ve Google E-Tablolar'da hesaplama

Bu, ofis görevleri için en popüler yöntemdir. Aşağıda temel fonksiyonlar verilmiştir.

Takvim günleri

GörevFormül (Excel / Google Sheets)Örnek
Basit fark=B2-A2A2=01.05.2026, B2=10.05.2026 ise sonuç 9
DATEDIF fonksiyonu=DATEDIF(A2; B2; "d")Sonuç 9 (çıkarma işlemiyle aynı)
Her iki gün dahil=B2-A2+1Sonuç 10 gün

Google E-Tablolar'da argüman ayırıcısı bölge ayarlarına bağlı olabilir: noktalı virgül ; veya virgül , kullanın.

İş günleri (hafta sonları ve tatiller hariç)

İş hesaplamaları için NETWORKDAYS fonksiyonunu kullanın.

Sözdizimi: =NETWORKDAYS(başlangıç_tarihi; bitiş_tarihi; [tatiller])

  • Başlangıç ve bitiş tarihi: Hücre referansları.
  • Tatiller (isteğe bağlı): Hesaplamadan çıkarılması gereken resmi tatil tarihlerini içeren hücre aralığı.

Örnek: 1 Mayıs 2026 ile 10 Mayıs 2026 arasındaki iş günü sayısını bulmak için, 9 Mayıs'ı (tatil) hariç tutarak: =NETWORKDAYS("01.05.2026"; "10.05.2026"; "09.05.2026")

Manuel sayım ve takvim incelikleri

Yanınızda bilgisayar yoksa günleri manuel olarak sayabilirsiniz. Önemli olan ayların uzunluğunu ve artık yılları hatırlamaktır.

Manuel sayım algoritması:

  1. İlk aydaki kalan günleri sayın (başlangıç tarihinden ayın sonuna kadar).
  2. Tarihler arasındaki tam ayları ekleyin (her aydaki gün sayısını bilin: 30 veya 31, Şubat — 28 veya 29).
  3. Son aydaki bitiş tarihine kadar olan günleri ekleyin.

Artık yıllar

Bir yıl 4'e bölünüyor ancak 100'e bölünmüyorsa veya 400'e bölünüyorsa artık yıldır.

  • 2024, 2028 — artık yıllar (Şubat ayında 29 gün vardır).
  • 2025, 2026, 2027 — normal yıllar (Şubat ayında 28 gün vardır).

Şubat ayından geçen manuel hesaplamalarda yılın artık yıl olup olmadığını mutlaka kontrol edin. Bir günlük hata çoğunlukla burada yapılır.

Manuel hesaplama örneği: 25 Şubat 2024 ile 5 Mart 2024 arasında kaç gün var?

  1. 2024 yılı artık yıldır, Şubat ayında 29 gün vardır.
  2. Şubat ayının kalanı: 29 - 25 = 4 gün.
  3. Mart günleri: 5 gün.
  4. Toplam: 4 + 5 = 9 gün.

Programlama yöntemleri (Python, JavaScript)

Geliştiriciler ve süreç otomasyonu için programlama dillerinin yerleşik kütüphanelerini kullanmak daha iyidir. Bunlar artık yılları otomatik olarak dikkate alır ve ay geçişlerini doğru şekilde işler.

Python

datetime modülünü kullanın.

from datetime import date

d1 = date(2026, 5, 1)
d2 = date(2026, 5, 10)

# Takvim günleri cinsinden fark
delta = d2 - d1
print(delta.days)  # Çıktı: 9

JavaScript

JS'de tarihler milisaniye cinsinden çalışır, bu nedenle dönüşüm gereklidir.

const date1 = new Date('2026-05-01');
const date2 = new Date('2026-05-10');

// Milisaniye cinsinden fark
const diffTime = Math.abs(date2 - date1);
// Günlere çevirme (1000 ms * 60 sn * 60 dk * 24 sa)
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); 

console.log(diffDays); // Çıktı: 9

JavaScript'te her iki tarihin saat dilimlerinin aynı olduğundan emin olun, aksi takdirde yaz/kış saati uygulamasına geçişte sonuç 1 gün kayabilir. Zaman belirtmeden YYYY-MM-DD formatını kullanmak daha iyidir.

Hesaplamalarda sık yapılan hatalar

  1. "Bir eksik/hatalı" hatası (Off-by-one). En yaygın sorun. 1'inden 5'ine kadar otel rezervasyonu yaparsanız, orada 4 gece kalırsınız ancak 5 takvim günü geçer.

    • Çözüm: "Gece" sayısını (tarih farkı) mı yoksa "kalış günlerini" (fark + 1) mi saydığınızı net bir şekilde belirleyin.
  2. Saat dilimlerinin ihmal edilmesi. Programlı hesaplamada, bir tarih UTC'de diğeri yerel saatte belirtilirse, fark tam gün sayısı olmayabilir.

    • Çözüm: Tüm tarihleri aynı formata getirin (tercihen zaman içermeyen tarih formatı).
  3. Excel'de yanlış tarih formatı. Excel tarihi metin olarak algılarsa, formül #VALUE! hatası döndürür.

    • Çözüm: Hücre formatını kontrol edin ("Tarih" olmalıdır) veya metni dönüştürmek için DATEVALUE() fonksiyonunu kullanın.

SSS: Popüler sorular

Tarihler arasındaki ay sayısı nasıl hesaplanır? Excel'de =DATEDIF(A2; B2; "m") kullanın. Python'da bu daha zordur çünkü ayların uzunluğu farklıdır; genellikle dateutil kütüphanesi kullanılır.

Sadece Pazar günleri nasıl hariç tutulur? Excel'in yeni sürümlerinde, hafta sonu günlerinin kodunu belirleyebileceğiniz NETWORKDAYS.INTL fonksiyonu vardır. Örneğin, kod 11 sadece Pazar gününün tatil olduğu anlamına gelir.

Google E-Tablolar'da formül neden negatif sayı gösteriyor? Bu, ilk tarihin (çıkarılan) ikinci tarihten daha geç olduğu anlamına gelir. Pozitif bir değer elde etmek için ABS() (mutlak değer) fonksiyonunu kullanın: =ABS(B2-A2).

Belirli bir tarihe kadar olan günler hızlıca nasıl hesaplanır? Mevcut tarihi hedef tarihten çıkarın. Excel'de: =HEDEF_TARIH - BUGÜN(). BUGÜN() fonksiyonu dosya her açıldığında otomatik olarak güncellenir.