C# programlama dilinde tarih ve zaman işlemlerini System isim alanında bulunan DateTime ve TimeSpan yapıları ile gerçekleştirebilirsiniz.
DateTime yapısını gün, ay, yıl, saat, dakika, saniye gibi bilgileri tutmak için kullanılabilirken, TimeSpan yapısını ise iki tarih arasındaki farkı temsil etmek için kullanılır.
Bu yazımızda DateTime kullanımı, DateTime özellikleri ve metotları ile ilgili bilgiler vererek örneklerle anlatmaya çalışacağım.
Öncelikli olarak DateTime yapısının içinde tutabileceğimiz en küçük ve en büyük tarih bilgisinin ne olduğuna bakalım.
1 2 3 4 5 6 7 | private void button1_Click(object sender, EventArgs e) { label1.Text = "En Küçük: " + DateTime.MinValue; label2.Text = "En Büyük: " + DateTime.MaxValue; } |
Yukarıdaki kodları çalıştırdığımızda aşağıdaki sonucu elde ederiz.

Now – Today
Şimdi de DateTime yapısının iki önemli ve çok kullanılan Now ve Today özelliğine bakalım.
Now anlık tarih ve saat bilgisini verirken Today ise o anki tarih bilgisini verir. Today saat bilgisini (00:00:00) olarak gösterir.
Aşağıdaki kodları yazıp çalıştıralım.
1 2 3 4 5 6 7 | private void button1_Click(object sender, EventArgs e) { label1.Text = "Now : " + DateTime.Now; label2.Text = "Today: " + DateTime.Today; } |
Ekran çıktısı aşağıdaki olacaktır.

Aynı işlemleri aşağıdaki gibi bir DateTime nesnesi oluşturarak ta gerçekleştirebiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 | private void button1_Click(object sender, EventArgs e) {//https://www.yazilimkodlama.com DateTime tarihSaat = new DateTime(); tarihSaat=DateTime.Now; DateTime tarih = new DateTime(); tarih = DateTime.Today; label1.Text = tarihSaat.ToString(); label2.Text = tarih.ToString(); } |
Ekran çıktısı yine aynı olacaktır.

Bir DateTime nesnesini aşağıdaki metotlar ile oluşturmakta mümkündür.
1 2 3 4 5 6 | DateTime dt = new DateTime(long tickSayisi); DateTime dt = new DateTime(int yil, int ay, int gun); DateTime dt = new DateTime(int yil, int ay, int gun, int saat, int dakika, int saniye); DateTime dt = new DateTime(int yil, int ay, int gun, int saat, int dakika, int saniye, int milisaniye); |
Örnek olarak yıl, ay ve gün bilgisini kendimiz kod içinde gireceğimiz bir örnek oluşturalım;
1 2 3 4 5 6 7 8 9 10 11 12 | private void button1_Click(object sender, EventArgs e) {//https://www.yazilimkodlama.com DateTime bugun = DateTime.Today; DateTime odemeGunu = new DateTime(2022,8,25); label1.Text = "Tarih: "+bugun.ToShortDateString(); label2.Text = "Ödeme Günü: "+odemeGunu.ToShortDateString(); } |
Ekran Çıktısı:

DateTimePicker Kontrolü Kullanarak Tarih Bilgisi Alma
Şimdi de formumuza eklemiş olduğumuz DateTimePicker kontrolünü kullanarak tarih bilgisini nasıl alacağımıza bakalım.
Kodlarımız:
1 2 3 4 5 6 7 8 9 10 11 12 | private void button1_Click(object sender, EventArgs e) { DateTime bugun = DateTime.Today; DateTime odemeGunu = dateTimePicker1.Value; label1.Text = "Tarih: "+bugun.ToShortDateString(); label2.Text = "Ödeme Günü: "+odemeGunu.ToShortDateString(); } |
Ekran Çıktısı:

DateTime Özellikleri
DateTime yapısının kullanabilceğimiz bir çok güzel özelliği bulunmaktadır.
Bütün bu özellikler aşağıda verilmiştir. Açıklamalardaki parantez içindeki türler, özelliğin türünü belirtmektedir.
- Date: DateTime nesnesine ilişkin saat dışındaki bilgiyi verir. (DateTime)
- Month: DateTime nesnesinin ay bilgisini verir. (int)
- Day: DateTime nesnesinin gün bilgisini verir. (int)
- Year: DateTime nesnesinin yıl bilgisini verir. (int)
- DayOfWeek: DateTime nesnesinin haftanın kaçıncı günü olduğunu bilgisini verir. (DayofWeek Numaralandırması)
- DayOfYear: DateTime nesnesinin yılın kaçıncı gününe denk geldiği bilgisini verir. (int)
- TimeOfDay: Saat 00:00:00 dan itibaren ne kadar zaman geçtiğini TimeSpan nesnesi olarak verir.(TimeSpan)
- Hour: DateTime nesnesinin saat bilgisini verir. (int)
- Minute: DateTime nesnesinin dakika bilgisini verir. (int)
- Second: DateTime nesnesinin saniye bilgisini verir. (int)
- Millisecond: DateTime nesnesinin mili saniye bilgisini verir. (int)
- Ticks: Date time nesnesindeki tarih ile 1 Ocak 0001, 00:00:00 tarihi arasındaki 100 nanosaniyelik peryotların sayısını verir. (long)
Yukarıdaki tüm özellikleri bir örnekte kullanalım.
C# Kodları:
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | public partial class Form1 : Form {//https://www.yazilimkodlama.com public Form1() { InitializeComponent(); } DateTime bugun = DateTime.Now; //Global olarak tanımladık. private void btnDate_Click(object sender, EventArgs e) { label1.Text = bugun.Date.ToString(); } private void btnMonth_Click(object sender, EventArgs e) { label2.Text = bugun.Month.ToString(); } private void btnDay_Click(object sender, EventArgs e) { label3.Text = bugun.Day.ToString(); } private void btnYear_Click(object sender, EventArgs e) { label4.Text = bugun.Year.ToString(); } private void btnDayOfWeek_Click(object sender, EventArgs e) { label5.Text = bugun.DayOfWeek.ToString(); } private void btnDayOfYear_Click(object sender, EventArgs e) { label6.Text = bugun.DayOfYear.ToString(); } private void btnTimeOfDay_Click(object sender, EventArgs e) { label7.Text = bugun.TimeOfDay.ToString(); } private void btnHour_Click(object sender, EventArgs e) { label8.Text = bugun.Hour.ToString(); } private void btnMinute_Click(object sender, EventArgs e) { label9.Text = bugun.Minute.ToString(); } private void btnSecond_Click(object sender, EventArgs e) { label10.Text = bugun.Second.ToString(); } private void btnMilliSecond_Click(object sender, EventArgs e) { label11.Text=bugun.Millisecond.ToString(); } private void btnTicks_Click(object sender, EventArgs e) { label12.Text=bugun.Ticks.ToString(); } } |
Ekran Çıktısı:

C# Verilen Tarihe Gün, Ay, Yıl, Dakika, Saniye vb. Ekleme
DateTime nesnesinin belirttiği tarih ve saat bilgisine gün, ay, yıl, saat, dakika, saniye gibi eklemeler yapılabilir.
Bu işlemler için AddDays, AddMonths, AddYears, AddHours, AddMinutes, AddSeconds metotlarını kullanabiliriz.
Aşağıdaki örnek bu metotların nasıl kullanılabileceğini göstermektedir.
C# Kodlarımız:
1 2 3 4 5 6 7 8 9 10 11 12 13 | private void button1_Click(object sender, EventArgs e) {//https://www.yazilimkodlama.com DateTime bugun=DateTime.Now; label1.Text=bugun.ToString(); label2.Text = bugun.AddDays(5).ToString()+" 5 gün eklendi."; //Bugünün tarihine 5 gün ekle. label3.Text = bugun.AddMonths(2).ToString()+" 2 ay eklendi.";//Bugünün tarihine 2 ay ekle. label4.Text=bugun.AddYears(2).ToString()+" 2 yıl eklendi.";//Bugünün tarihine 2 yıl ekle. label5.Text = bugun.AddHours(3).ToString()+" 3 saat eklendi.";//Anlık saate 3 saat ekle label6.Text = bugun.AddMinutes(15).ToString()+" 15 dakika eklendi.";//Anlık saate 15 dakika ekle. label7.Text = bugun.AddSeconds(20).ToString()+" 20 saniye eklendi.";//Anlık saate 20 saniye ekle. } |
Ekran Çıktısı:

C# İki Tarih Arası Farkı Bulma
C# iki tarih arasındaki farkı gün, saat, dakika, saniye vb bulmak çok kolay bir işlemdir. Bunun için TimeSpan nesnesi kullanılabilir.
Örnek:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | private void button1_Click(object sender, EventArgs e) {//https://www.yazilimkodlama.com DateTime bugun=DateTime.Now; DateTime sonOdeme = new DateTime(2022, 3, 30,14,30,50,20); label1.Text="Bugün: "+bugun.ToString(); label2.Text="Son Ödeme: "+sonOdeme.ToString(); TimeSpan tarihFark = sonOdeme - bugun; label3.Text= "Gün Farkı: "+tarihFark.Days.ToString(); label4.Text= "Saat Farkı: " + tarihFark.Hours.ToString(); label5.Text= "Dakika Farkı: " + tarihFark.Minutes.ToString(); label6.Text= "Saniye Farkı: " + tarihFark.Seconds.ToString(); label7.Text= "MiliSaniye Farkı: " + tarihFark.Milliseconds.ToString(); } |
Ekran Çıktısı:

bu guzel bilgi icin cok teshekkurler