C# Tarih Fonksiyonları



Merhabalar aslında bu makaleyi yazarken amacım hangisi nedir yerine bu metodların ihtiyaç durumlarına göre kullanımlarına  örnekler vermekti. Ama konu o kadar geniş ki bunu daha sonra ki bir zamana erteleme kararı aldım. Ee başlamışken birşeyler anlatarak konuya girmiş olalım.

DateTime dt = DateTime.Now;
DateTime dt2=new DateTime(2011,1,1);

İki tarih arasında ki farkı bulmak:
İki tarihideki fark Subtract() metoduyla bulunur ve TimeSpan tipinden değer döndürür.

TimeSpan tSpan = dt.Subtract(dt2);

İsterseniz TimeSpan olarak dönen değerle şimdi neler yapabiliriz inceleyelim.
Aşagıdaki örneklerde farkı gün saat gibi int tipinden alabildiğimizi görüyoruz.

tSpan.Days;
tSpan.Hours;
tSpan.Minutes;
tSpan.Seconds;

belli başlı özellikleri ele aldık eğer inceleresenizdaha fazlası oldugunu göreceksiniz.

Tarihin belli bölümlerini alabiliriz.

dt.Day; Tarihin gün değerini int tipinden döndürür
dt.Month; Tarihin ay değerini int tipinden döndürür.
dt.Year; Tarihin yıl değerini int tipinden döndürür.

Saat dakika saniye cinsinden properties lerin oldugunu artık söylemeye gerek yok sanırım.

Tarih ekleme çıkarma:

dt.AddDays(1); Güne 1 ekledik
dt.AddDays(-1); Gün degerini 1 eksilttik yani düne gittik
dt.AddHours(1); Saate 1 ekledik
dt.AddHours(-1); Saati 1 eksilttik
Ay, yıl, dakika, saniye gibi işlemleri kendiniz deneyebilisiniz.
Sizde fakedeceksiniz ama yinede değinmeden geçmiş olamayalım. Saniye, dakika, gün gibi özeliklere yapılan ekleme ve çıkarmalar direk olarak eğer gün ise tarihin yıl kısmınıda etkileyecektir. Yani 31.12.2010 tarihine 1 gün eklerseniz 01.01.2011 tarihine dönecektir. Aynısı dakika, saat gibi özellikler içinde geçerlidir.

Tarih Formatlama :

Zaman zaman tarihleri farklı formatlarda almak isteriz. Şimdi bunu nasıl yapabiliriz inceleyelim. Uygulanan formatlar ve döndürdükleri string degerler aşağıda yanyana gösterilmekte.

dt.ToString("t");  23:29
dt.ToString("r");  Wed, 04 May 2011 23:29:09 GMT
dt.ToString("T");  23:28:30
dt.ToString("m"); 04 Mayıs
dt.ToString("G");  04.05.2011 23:26:10
dt.ToString("g");  04.05.2011 23:25
dt.ToString("F");  04 Mayıs 2011 Çarşamba 23:24:42
dt.ToString("f");  04 Mayıs 2011 Çarşamba 23:24
dt.ToString("D");  04 Mayıs 2011 Çarşamba
dt.ToString("d");  04.05.2011
dt.ToString("yyyy.MM.dd"); 2011.05.04

Yukarıda uygulanan formatların tamamı String.Format() yönteminde de aynen kullanılabilir.
String.Format("{0:m}", dt); 04 Mayıs

dt.ToLongDateString(); 04 Mayıs 2011 Çarşamba
dt.ToShortTimeString(); 23:19
dt.ToShortDateString(); 04.05.2011
dt.ToString(); 04.05.2011 23:17:08

Başta da dediğim gibi geniş bir konu. İhtiyaça göre bu anlatılan özellikler birçok faklı şekilde kullanılabilir.
Başlangıç için umarım faydalı olmuştur.

7 yorum

Teşekkürler..

Cevapla

gayet faydalı olmuş teşekkürler

Cevapla

Çok faydalı bir makale teşekkür ederim.

Cevapla

burada sormak istediğimiz önemli bir nokta şu ki;

örneğin 1 ocak 2016'dan bugüne yani 2016-04-19 15:54:00 tarihine kadar kaç saniye geçti bunu hesaplayadığımızda saat farkından dolayı 1 saat fazla veya eksik hesaplıyor. bunu nasıl önleriz?

Cevapla

texbox1.text içine yazdığımız bir tarihe 30 gün ekleyip textbox2 ye nasıl yazdırabiliriz

Cevapla

texbox1.text verisi string haldedir. Bunu DataTime tipine çevirip AddDays metodunu kullanmanız gerekiyor. Detayları yukarıda mevcut.

Ama Formatı uygun olmayan veriyi cast etmeye çalıştığınız da hata alırsınız. Tarih componentini kullanmanız daha doğru olur. Zaten bunların içinde illa ki girilen zamanı DateTime tipinde veren bir property ya da method vardır.

Cevapla

Yorum Gönder