175 Görüntülenme

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?
5 (100%) 1 Oy

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ü

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(7).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ü,

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.

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

Sağlıcakla ve Takipte kalın. 😉

 

 

Liseden, Ağ Sistemleri ve Yönetimi bölümünden mezun oldum. Üniversiteden (2 yıllık), Bilgisayar Programcılığı bölümünden mezun oldum. Şuanda da AÖF, Yönetim Bilişim Sistemleri bölümünde okumaktayım.

Uzmanlık alanlarım; Windows Sistemleri, HTML, CSS, C# ve SQL’dir.

Hobi olarak uğraştığım genel konular, Photoshop, After Affects, Corel Draw’dır.Film, YABANCI dizi, Anime izlemeyi ve Manga okumayı severim. Arkadaşlarımla yürüyüş yapmayı ve grup olarak aktivitelere gitmeyi severim. Geri kalan zamanlarımın tümü bilgisayar karşısında geçer.