Bu makalede, Windows Forms kullanarak bir sınav tarihi takip uygulaması geliştireceğiz. Ayrıca, uygulama sırasında kullanılan DateTime ve TimeSpan sınıflarını detaylı bir şekilde inceleyeceğiz. Bu sınıflar, tarih ve zaman hesaplamaları yapmak için C#’ta sıkça kullanılır.
DateTime ve TimeSpan Nedir?
- DateTime: Tarih ve saat bilgilerini tutar. Bu sınıf, belirli bir tarih ve saati temsil etmek veya mevcut tarih ve saati almak için kullanılır.
- TimeSpan: İki tarih veya saat arasındaki farkı temsil eder. Bu sınıf, gün, saat, dakika, saniye ve milisaniye cinsinden süre hesaplamalarına olanak tanır.
DateTime Özellikleri
- DateTime.Now: Sistemin şu anki tarih ve saatini döndürür.
- DateTime.Today: Sadece gün bilgisini döndürür, saat kısmını 00:00 olarak ayarlar.
- AddDays(), AddMonths(): Tarihe belirli bir süre eklemek için kullanılır.
- ToShortDateString(), ToLongDateString(): Tarihi kısa veya uzun formatta string olarak döndürür.
TimeSpan Özellikleri
- Days, Hours, Minutes: Sürenin gün, saat ve dakika cinsinden değerlerini döndürür.
- TotalDays, TotalHours: Sürenin toplam gün veya saat cinsinden değerini verir.
- Subtract(): İki tarih arasındaki farkı hesaplar.
Uygulama: Sınav Tarihi Takibi
Bu uygulamada, kullanıcılar sınav tarihlerini seçer ve DateTime ile TimeSpan sınıflarını kullanarak bu tarihlere kalan günler hesaplanır.
Kod Detayları
1. Gün Hesaplama Fonksiyonu
Aşağıdaki fonksiyon, seçilen tarih ile bugünün tarihi arasındaki farkı hesaplar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | private string KalanGunHesapla(DateTime tarih) { // Şu anki tarihi al DateTime bugun = DateTime.Now; // Tarih farkını TimeSpan ile hesapla TimeSpan fark = tarih - bugun; // Mesaj değişkenini tanımla string mesaj = ""; // Eğer fark negatifse sınav tarihi geçmiş if (fark.Days < 0) { mesaj = "Sınav tarihi geçti."; } else { mesaj = $"Sınava kalan gün: {fark.Days}"; } return mesaj; } |
DateTime.Now
: Sistemin mevcut tarih ve saatini alır.tarih - bugun
: İki tarih arasındaki fark, birTimeSpan
nesnesi döndürür.fark.Days
: Bu farkın sadece gün cinsinden değerini verir.
2. Form Yükleme ve Başlık Ayarı
Form yüklendiğinde, pencere başlığına bugünün tarihini ekliyoruz:
1 2 3 4 5 6 | private void Form1_Load(object sender, EventArgs e) { this.Text = "yazilimkodlama.com - " + DateTime.Today.ToShortDateString(); } |
DateTime.Today
: Günün tarihini alır, ancak saat bilgisi içermez.ToShortDateString()
: Tarihi kısa formatta string olarak döndürür (örneğin, “26.12.2024”).
3. Buton Tıklama Olayı
Kullanıcı sınav tarihlerini seçtikten sonra butona tıkladığında, kalan günler hesaplanır:
1 2 3 4 5 6 7 8 | private void button1_Click(object sender, EventArgs e) { lblEdebiyat.Text = KalanGunHesapla(dtpEdebiyat.Value); lblMatematik.Text = KalanGunHesapla(dtpMatematik.Value); lblFizik.Text = KalanGunHesapla(dtpFizik.Value); } |
dtpEdebiyat.Value
: Kullanıcının Edebiyat sınavı için seçtiği tarihi alır.lblEdebiyat.Text
: Hesaplanan sonucu ilgili etiket üzerinde gösterir.
Örnek Çıktı:
