1. Ana Sayfa
  2. C Sharp

C# Yıl, Ay ve Haftanın İlk ve Son Gününü Nasıl Buluruz?

C# Yıl, Ay ve Haftanın İlk ve Son Gününü Nasıl Buluruz?
+ - 2

C# Yıl, Ay ve Haftanın İlk ve Son Gününü Nasıl Buluruz? dersimiz ile C# derslerimize devam ediyoruz. Bu dersimizin konusu kısaca tarih işlemleridir. Raporlamaya dayalı bir proje yaptığımızda yada projemizde bir raporlama ekranı yapacak olduğumuzda bu bilgiler bize çok gerek olmaktadır. Bu dersimizde de tarih işlemleri ile bu bilgileri nasıl alacağımızı göreceğiz. Kodları vermeye başlayalım.

C# hakkındaki diğer derslerim için tıklayabilirsiniz.

Yılın ilk ve son gününü bulmak

//Yılın ilk ve son günü
DateTime dt_Yil_ilkGun = new DateTime(DateTime.Now.Year, 1, 1); // Yılın ilk günü
DateTime dt_Yil_sonGun = dt_Yil.AddYears(1).AddDays(-1); // Yılın son günü

Tarih işlemleri arasında belkide en basit olanıdır.. Şuanın tarih bilgisi içerisinden yılı alıyoruz. Bu yıl bilgisi ile yeni bir datetime değişkeni oluşturup yılın ilk gününü bu değişkene atıyoruz. Bu oluşturduğumuz değişkenle yılın ilk gününü elde etmiş oluyoruz.

Yılın son gününü ise elde ettiğimiz tarihe tarih gün ekleme ile bir yıl ekleyip tarih gün çıkarma ile bir gün çıkartıyoruz. Bu şekilde de yılın son gününü elde etmiş oluyoruz. :)

 

Ayın ilk ve son gününü bulmak

//Ayın ilk ve son günü
DateTime dt_Ay_ilkGun = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); // Ay ilk günü
DateTime dt_Ay_sonGun = dt_Ay .AddMonths(1).AddDays(-1);// Ay son günü

Tarih işlemleri arasında en gerekli olan bilgilerden birisi de ayın ilk ve son gününü almak oluyor. Ayın ilk ve son gününü alırken de yılın il ve son günün aldığımız mantık ile yapıyoruz. Şuan ki tarih bilgisinden yıl ve ay bilgisini alıyoruz. Aldığımız bu bilgiler ile yeni bir datetime değişkeni oluşturup ayın ilk gününü bu değişkene atıyoruz. Sonrasında da bu yeni tarihe bir ay ekleyip bir gün çıkartıyoruz.

 

Haftanın ilk ve son gününü bulmak

// Haftanın ilk ve son günü

DateTime dt_Hafta = DateTime.Now;
switch ((int)dt.DayOfWeek)
{
    case 0://Haftanın ilk günü Pazar kabul edildiğinden
        dt_Hafta_ilkGun = dt_Hafta.AddDays(-6).ToShortDateString(); // İçinde olduğumuz haftanın başı Pazartesi
        dt_Hafta_sonGun = dt_Hafta.AddDays(1).ToShortDateString(); // Sonraki haftanın başı Pazartesi
    break;

    default:// Gün Pazar değilse;
        dt_Hafta_ilkGun = dt_Hafta .AddDays(1 - (int)dt.DayOfWeek).ToShortDateString(); // İçinde olduğumuz haftanın başı Pazartesi
        dt_Hafta_sonGun = dt_Hafta .AddDays(6).ToShortDateString(); //  Sonraki haftanın başı Pazartesi
    break;
}

Haftanın ilk ve son günün almak yıl ve ay gibi kolay değil elbette :). Çünkü bazı ülkelerde hafta başı Pazar günü kabul ediliyor. Bu sebeple haftanın kaçıncı gününde olduğumuzdan yola çıkarak haftanın ilk gününü buluyoruz. Sonrasında da bu tarihe 7 gün ekleyerek haftanın son gününü buluyoruz.

 

Günün başlangıcı ve sonunu bulmak

Bunuda bonus olarak yazmış olalım. :) Bunda biraz kolaya kaçalım. :)

DateTime dt_Gun_Basla = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 00, 00, 00);
DateTime dt_Gun_Bitis = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);

İçerisinde bulunduğumuz yıl, ay ve günü kullanarak günü ilk ve son saat, dakika ve saniyesini manuel olarak veriyoruz. Basit ama bize kolaylık sağlıyor.

Ek olarak şunu da vermiş olalım. :)

DateTime Suan = DateTime.Now;

Bu şekilde de kodun çalıştığı anı alırız

Şimdi bunları bir class yapacak olsak nasıl yaparız? Class, Class her yerde, her zaman, her konuda gerekiyor. :)

 

Hazırladığım class’ı sizlerle de paylaşayım.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Uygulamam
{
    public class Tarih_islemleri
    {
        public static DateTime GunBaslangic, GunBitis;
        public static DateTime HaftaninIlkGunu, HaftaninSonGunu;
        public static DateTime AyinIlkGunu, AyinSonGunu;
        public static DateTime YilinIlkGunu, YilinSonGunu;

        public static void GunBilgileriniAl()
        {
            GunBaslangic = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 00, 00, 00);
            GunBitis = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
        }
        public static void HaftaBilgileriAl()
        {
            DateTime dt = DateTime.Now;
            switch ((int)dt.DayOfWeek)
            {
                case 0://Haftanın ilk günü Pazar kabul edildiğinden
                    HaftaninIlkGunu = dt.AddDays(-6); // İçinde olduğumuz haftanın başı Pazartesi
                    HaftaninSonGunu = HaftaninIlkGunu.AddDays(1); // Sonraki haftanın başı Pazartesi
                    break;

                default:// Gün Pazar değilse;
                    HaftaninIlkGunu = dt.AddDays(1 - (int)dt.DayOfWeek); // İçinde olduğumuz haftanın başı Pazartesi
                    HaftaninSonGunu = HaftaninIlkGunu.AddDays(6); //  Sonraki haftanın başı Pazartesi
                    break;
            }
        }
        public static void AyBilgileriniAl()
        {
            AyinIlkGunu = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); // Ay ilk günü
            AyinSonGunu = AyinIlkGunu.AddMonths(1).AddDays(-1);// Ay son günü
        }
        public static void YilBilgileriniAl()
        {
            YilinIlkGunu = new DateTime(DateTime.Now.Year, 1, 1); // Yılın ilk günü
            YilinSonGunu = YilinIlkGunu.AddYears(1).AddDays(-1); // Yılın son günü

        }
    }
}

Voidleri public yapmamın sebebi, değişkenler ilk anda boş olduğundan istediğimiz tarihleri alamayız. Bu sebeple değişkenleri doldurmak için önce voidleri bir kere çalıştırmamış gerekmektedir.

Değişkenleri Static yapmamdaki amaç ise bu kullanım şeklinin bana daha kolay gelmesidir. İsterseniz diğer kullanım şeklini de kullanabilirsiniz. Bu konuları Class Nedir? Nasıl Kullanılır?  başlıklı yazımda bahsetmiştim.

Şimdi kullanım şeklimizi görelim.

 private void Form1_Load(object sender, EventArgs e)
        {
            Tarih_islemleri.GunBilgileriniAl();
            DateTime dt1 = Tarih_islemleri.GunBaslangic;
            DateTime dt2 = Tarih_islemleri.GunBitis;
        
            Tarih_islemleri.HaftaBilgileriAl();
            DateTime dt3 = Tarih_islemleri.HaftaninIlkGunu;
            DateTime dt4 = Tarih_islemleri.HaftaninSonGunu;

            Tarih_islemleri.AyBilgileriniAl();
            DateTime dt5 = Tarih_islemleri.AyinIlkGunu;
            DateTime dt6 = Tarih_islemleri.AyinSonGunu;
    
            Tarih_islemleri.YilBilgileriniAl();
            DateTime dt7 = Tarih_islemleri.YilinIlkGunu;
            DateTime dt8 = Tarih_islemleri.YilinSonGunu;

            MessageBox.Show(
                dt1.ToString() + Environment.NewLine +
                dt2.ToString() + Environment.NewLine +
                 Environment.NewLine +
                dt3.ToString() + Environment.NewLine +
                dt4.ToString() + Environment.NewLine +
                 Environment.NewLine +
                dt5.ToString() + Environment.NewLine +
                dt6.ToString() + Environment.NewLine +
                 Environment.NewLine +
                dt7.ToString() + Environment.NewLine +
                dt8.ToString() + Environment.NewLine 
                );
        }

Önce voidleri çalıştırıyoruz. Sonrasında değişkenleri çağırıyoruz. MessageBox ile de tarihlerimizi ekrana basalım. Bakalım doğru bilgileri alabilmiş miyiz?. Ekran Görüntüsü,

D:\Mustafa BÜKÜLMEZ\mustafabukulmez.com\Yazılarım\023 - C# Yıl, Ay ve Haftanın İlk ve Son Gününü Nasıl Buluruz

Evet istediğimiz bilgiler hatasız geldi.

BİLGİ: Environment.Newline, örnekten de anlayacağınız gibi bir alt satıra geçmemizi sağlar.

C# hakkındaki diğer derslerim için tıklayabilirsiniz.

C Sharp Eğitim Seti ve ERP Programlama eğitimi sayfasına gitmek için tıklayınız.

Bu dersimizde bu kadar dostlar. Diğer derslerimizde görüşmek üzere…

Sağlıcakla ve Takipte 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. :)

Yorumlar (2)

  1. Haftalık hesaplamada bir hata var..

    haftanın son gününü 7 ekleyerek bulamazsın pazar hariç günlerde..
    haftanın ilk gününde sıkıntı yok.

    örn..

    Bugün Salı ise.. 7 eklersek o da salı olur..
    Bugün Ctesi ise 7 eklersek o da Ctesi olacaktır.

    Bilginiz olsun.

    İyi Çalışmalar.. Bunun dışında işime yaradı teşekkürler

    • Aynen. Çok doğru bir tespit olmuş. Haftanın günü aslında 6 gün eklenerek bulunur. Yani Pazartesi gününden Pazar gününe… 6 gün eklenmesi gerekiyor.
      Düzeltiyorum. İlgine teşekkürler.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.