C# DateTime & TimeSpan ile Tarih İşlemleri
C#’ta DateTime ve TimeSpan kullanarak tarih ve zaman işlemlerini öğrenin. Karşılaştırma, ekleme, çıkarma ve formatlama örnekleriyle.
C#’ta tarih ve saat işlemleri için DateTime ve TimeSpan yapıları kullanılır.
DateTime bir anı temsil ederken, TimeSpan iki tarih arasındaki farkı yani zaman aralığını tutar.
Bu yapılar sayesinde tarih karşılaştırma, ekleme/çıkarma, biçimlendirme gibi işlemler kolayca yapılabilir.
DateTime Nedir?
DateTime yapısı, belirli bir tarihi ve zamanı temsil eder.
DateTime simdi = DateTime.Now;
Console.WriteLine(simdi); // Şu anki tarih ve saat
Console.WriteLine(DateTime.UtcNow); // Evrensel zaman
DateTime ile Temel Özellikler
Tarih bilgilerini tek tek almak mümkündür:
DateTime tarih = new DateTime(2025, 9, 9, 14, 30, 0);
Console.WriteLine(tarih.Year); // 2025
Console.WriteLine(tarih.Month); // 9
Console.WriteLine(tarih.Day); // 9
Console.WriteLine(tarih.Hour); // 14
Console.WriteLine(tarih.Minute); // 30
Console.WriteLine(tarih.ToShortDateString()); // 9.09.2025
Console.WriteLine(tarih.ToLongDateString()); // 9 Eylül 2025 Salı
DateTime ile İşlemler
Bir tarihe gün, ay veya yıl eklemek/çıkarmak için Add metotları kullanılır.
DateTime bugun = DateTime.Now;
Console.WriteLine(bugun.AddDays(5)); // 5 gün sonrası
Console.WriteLine(bugun.AddMonths(-1)); // 1 ay öncesi
DateTime gelecek = bugun.AddYears(1);
Console.WriteLine(gelecek); // 1 yıl sonrası
// İki tarih arasındaki fark
DateTime dogum = new DateTime(2000, 1, 1);
TimeSpan fark = bugun - dogum;
Console.WriteLine($"Toplam gün: {fark.Days}");
TimeSpan Nedir?
TimeSpan, bir zaman aralığını temsil eder.
TimeSpan sure = new TimeSpan(2, 30, 0); // 2 saat 30 dakika
Console.WriteLine(sure.TotalMinutes); // 150 dakika
DateTime – TimeSpan Birlikte Kullanımı
Bir tarihe TimeSpan ekleyerek yeni bir tarih oluşturabiliriz.
DateTime simdi = DateTime.Now;
TimeSpan ucSaat = new TimeSpan(3, 0, 0);
DateTime yeniTarih = simdi + ucSaat;
Console.WriteLine(yeniTarih);
Tarih Karşılaştırma
Tarihler >, <, == ile karşılaştırılabilir. Ayrıca Compare metodu da kullanılabilir.
DateTime t1 = new DateTime(2025, 1, 1);
DateTime t2 = new DateTime(2025, 12, 31);
Console.WriteLine(t1 < t2); // true
Console.WriteLine(DateTime.Compare(t1, t2)); // -1 (t1 küçük)
Bir tarihin belirli bir yıl veya ayda olup olmadığını kontrol etmek:
DateTime tarih = new DateTime(2025, 9, 9);
bool ayniYil = (tarih.Year == 2025); // true
bool ayniAy = (tarih.Month == 9); // true
Tarih Formatlama
ToString metodu ile özel formatlar kullanılabilir.
DateTime simdi = DateTime.Now;
Console.WriteLine(simdi.ToString("dd.MM.yyyy")); // 09.09.2025
Console.WriteLine(simdi.ToString("dd.MM.yy")); // 09.09.25
Console.WriteLine(simdi.ToString("yyyy-MM-dd HH:mm")); // 2025-09-09 14:45
Örnek Uygulama: Proje Süresi ve Günlük Ücret Hesaplama
Console.Write("Proje başlangıç tarihini giriniz (yyyy-MM-dd): ");
DateTime baslangic = DateTime.Parse(Console.ReadLine());
Console.Write("Proje bitiş tarihini giriniz (yyyy-MM-dd): ");
DateTime bitis = DateTime.Parse(Console.ReadLine());
if (bitis <= baslangic)
{
Console.WriteLine("Hata: Bitiş tarihi başlangıç tarihinden sonra olmalıdır.");
}
else
{
Console.Write("Proje toplam fiyatını giriniz: ");
decimal fiyat = decimal.Parse(Console.ReadLine());
TimeSpan sure = bitis - baslangic;
int gunSayisi = sure.Days;
decimal gunlukUcret = fiyat / gunSayisi;
Console.WriteLine($"Proje süresi: {gunSayisi} gün");
Console.WriteLine($"Günlük ücret: {gunlukUcret:0.00} TL");
}
TL;DR
DateTimebir anı temsil eder,TimeSpanzaman aralığını tutar.NowveUtcNowile güncel zamanı alabilirsiniz.AddDays,AddMonths,AddYearsile tarih üzerinde işlem yapılır.- İki tarih farkı
TimeSpanile bulunur. - Tarih karşılaştırmaları
>,<,==veyaCompareile yapılabilir. ToStringile özel formatlarda tarih yazdırılabilir.