C# Tüm DateTime İşlemleri – Gün Adı, Ay Adı, Hafta Numarası
Merhabalar arkadaşlar bu dersimizde C# Tüm DateTime İşlemleri bağlığı altında günün adını, ayın adını, hafta numarası gibi bilgileri nasıl alabiliriz sorusuna cevap vereceğim. Bu gibi bilgilerin ne zaman lazım olacağı hiç belli olmuyor. Bir anda aklınıza bir şeyler geliyor ve eklemek istiyorsunuz. İstiyoruz. Bu sebeple bu bilgiler hakkında bir yazı yazmak istedim. Umarım faydalı olur.
C# Tüm DateTime İşlemleri
Bu bilgileri alabilmemiz için öncelikle değişkenimizin DateTime tipinde olması gerekiyor.
DateTime dt = DateTime.Now;
Şimdi konumuza geçelim. Ben formuma labeller ekleyerek sonuçları göstereceğim. Ekran görüntüsünü de atacağım.
1 – DateTime Gün Adını Almak
Gün adını alabileceğimiz kodlar aşağıdaki gibidir. Farklı dillerde ve farklı şekillerde alabiliyoruz.
DateTime dt = DateTime.Now; lbl_gun_adi.Text = dt.ToString("dddd"); // Türkçe //lbl_gun_adi.Text = dt.Now.DayOfWeek.ToString(); // İngilizce //lbl_gun_adi.Text = dt.Parse("2017-09-09").DayOfWeek; // İngilizce //lbl_gun_adi.Text = CultureInfo.CurrentCulture.DateTimeFormat.DayNames[(int)dt.Now.DayOfWeek]; // Türkçe //lbl_gun_adi.Text = CultureInfo.GetCultureInfo("tr-TR").DateTimeFormat.DayNames[(int)dt.Now.DayOfWeek].ToString(); // Türkçe //lbl_gun_adi.Text = CultureInfo.GetCultureInfo("de-DE").DateTimeFormat.DayNames[(int)dt.Now.DayOfWeek].ToString(); // Almanca
En kısa kullanım şekli haricindekileri yorum satırı yaptım. Her satırın sonunda hangi dilde olduklarını görebilirsiniz. Ayrıca CultureInfo sınıfını kullanabilmek için aşağıdaki namespace’i eklemelisiniz.
using System.Globalization;
2 – DateTime Hafta Numarasını Almak
Hafta numarasını almak bazı projelerde gerekli olabiliyor. Mesela bir müşterime yazdığım programda hafta numarası çok gerekliydi.
/// <summary> /// Tarihten Hafta Numarasını Bulur. /// </summary> /// <param name="Tarih">Tarih</param> /// <returns></returns> public int HaftaNumarasiBul(DateTime Tarih) { DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(Tarih); if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday) { Tarih = Tarih.AddDays(3); } return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(Tarih, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); }
Yukarıdaki voidimiz gönderilen tarihten yılın kaçıncı haftasında olduğumuzu bulur.
3 – DateTime Yıl ve Hafta Numarasından Haftanın İlk Günün Bulmak
Elimizde hafta numarası varsa ve bu haftanın ilk gününü bilmek istiyorsak; işte bu kodlar o işe yarar.
public DateTime HaftaNodan_HaftaTarihBul(int yil, int haftano) { DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo; DateTime jan1 = new DateTime(yil, 1, 1); int daysOffset = DayOfWeek.Thursday - jan1.DayOfWeek; DateTime firstThursday = jan1.AddDays(daysOffset); Calendar cal = dfi.Calendar; int firstWeek = cal.GetWeekOfYear(firstThursday, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday); var weekNum = haftano; if (firstWeek <= 1) { weekNum -= 1; } var result = firstThursday.AddDays(weekNum * 7); return result.AddDays(-3); }
Son gününü bulmak istersek de elde ettiğimiz tarihe, 6 gün ekleriz.
4 – DateTime Ay Adını Almak
İçinde olduğumuz veya istediğimiz bir tarihteki ayın adını alma kodlarını görelim.
DateTime dt = DateTime.Now; lbl_ay_adi.Text = dt.ToString("MMMM");
5 – DateTime Ayın İlk ve Son Gününü Almak
Bir ayın ilk ve son günün almak çok sorulan bir soru oluyor. İlk kolay ama son gün nasıl alınacak. Bir ay 30 gün bir ay 31 gün. Üstelik Şubat ayı zaten bir 28 bir 29 oluyor biliyorsunuz. Aşağıda görebilirsiniz. Aslında çok basit.
DateTime dt = DateTime.Now; lbl_ay_ilk_gun.Text = new DateTime(dt.Year, dt.Month, 1).ToString(); lbl_ay_son_gun.Text = new DateTime(dt.Year, dt.Month, 1).AddMonths(1).AddDays(-1).ToString();
Nasıl? Gerçekten basit değil ve mantıklı değil mi? Bir ay ekle, bir gün çıkar hop son gündesin… :)
6 – DateTime Metodları
Şimdi DateTime sınıfına ait tüm metodları görelim. Bunları bir listbox nesnesine ekledim. Tek tek labeller ile uğraşmak zoruma gitti.
- ToLongDateString() = Sadece tarih bilgisini, uzunca DateTime olarak verir. Gün ve ay isimleri görünür.
- ToLongTimeString() = Sadece saat bilgisini, saniye bilgisi ile DateTime olarak verir
- ToShortDateString() = Sadece tarih bilgisini, gün ay yıl olarak ve DateTime olarakverir.
- ToShortTimeString() = Sadece saat bilgisi, saat ve dakika olarak ve DateTime olarak verir.
- ToLocalTime() = Yerel tarih ve saat bilgisini, gün ay yıl saat dakika saniye olarak ve DateTime olarak verir.
- IsDaylightSavingTime = O anki zamanın gün ışığından yararlanma saati olup olmadığı bilgisini Boolean olarak verir.
- Kind = Temsil edilen zamanın yerel saat, Eşgüdümlü Evrensel Saat (UTC) tabanlı olup olmadığını String olarak gösteren bir değer. – docs.microsoft.
- Ticks = İlk tarihten bu güne kadar olan Tick sayısını İnt verir. Bir milisaniye içinde 10.000 ticks vardır. docs.microsoft
- TimeOfDay() = Günün hangi saatinde olduğumuzu saat, dakika, saniye ve milisaniye olarak ve DateTime olarak verir.
- ToOADate() = Buradaki yazımda açıklamıştım.
- ToUniversalTime() = Universal saati DateTime olarak verir. Türkiye için Karşılığı UTC-3 diyebiliriz. Yani Universal saat Türkiye saatinden 3 saat geridir.
Kodlarını görelim.
string s; s = "ToLongDateString - " + dt.ToLongDateString(); listBox1.Items.Add(s); s = "ToLongTimeString - " + dt.ToLongTimeString(); listBox1.Items.Add(s); s = "ToShortDateString - " + dt.ToShortDateString(); listBox1.Items.Add(s); s = "ToShortTimeString - " + dt.ToShortTimeString(); listBox1.Items.Add(s); s = "ToLocalTime - " + dt.ToLocalTime().ToString(); listBox1.Items.Add(s); s = "IsDaylightSavingTime - " + dt.IsDaylightSavingTime().ToString(); listBox1.Items.Add(s); s = "Kind - " + dt.Kind.ToString(); listBox1.Items.Add(s); s = "Ticks - " + dt.Ticks.ToString(); listBox1.Items.Add(s); s = "TimeOfDay - " + dt.TimeOfDay.ToString(); listBox1.Items.Add(s); s = "ToOADate - " + dt.ToOADate().ToString(); listBox1.Items.Add(s); s = "ToUniversalTime - " + dt.ToUniversalTime().ToString(); listBox1.Items.Add(s);
7 – DateTime Milisaniye, Saniye, Dakika, Saat, Gün, Ay, Yıl Bilgilerini Almak
Aslında bu zaten bilinen bir şey ama yine de eklemeden geçmek istemedim.
int milisaniye = dt.Millisecond; int saniye = dt.Second; int dakika = dt.Minute; int saat = dt.Hour; int gun = dt.Day; int ay = dt.Month; int yil = dt.Year;
Yukarıdaki tüm işlemlerimizin ekran görüntüsü şöyledir.
Bir işlemden çok bilgi amaçlı olduğu için bu dersleri Github projeme ekleme gereği duymadım arkadaşlar.
C# Tüm DateTime İşlemleri dersimizde bu kadardı arkadaşlar. Diğer derslerimizde görüşmek üzere…
C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.
Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…
Takipte ve Sağlıcakla kalın.