İlginizi Çekebilir
c sharp devexpress
  1. Ana Sayfa
  2. C Sharp

C# Tüm DateTime İşlemleri

C# Tüm DateTime İşlemleri
+ - 0

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.

  1. ToLongDateString() = Sadece tarih bilgisini, uzunca DateTime olarak verir. Gün ve ay isimleri görünür.
  2. ToLongTimeString() = Sadece saat bilgisini, saniye bilgisi ile DateTime olarak verir
  3. ToShortDateString() = Sadece tarih bilgisini, gün ay yıl olarak ve DateTime olarakverir.
  4. ToShortTimeString() = Sadece saat bilgisi, saat ve dakika olarak ve DateTime olarak verir.
  5. ToLocalTime() = Yerel tarih ve saat bilgisini, gün ay yıl saat dakika saniye olarak ve DateTime olarak verir.
  6. IsDaylightSavingTime = O anki zamanın gün ışığından yararlanma saati olup olmadığı bilgisini Boolean olarak verir.
  7. 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.
  8. 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
  9. TimeOfDay() = Günün hangi saatinde olduğumuzu saat, dakika, saniye ve milisaniye olarak ve DateTime olarak verir.
  10. ToOADate() = Buradaki yazımda açıklamıştım.
  11. 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.

C# Tüm DateTime İşlemleri ekran görüntüsü

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. ?

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)