Adddays | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar adddays

C# ile iki tarih arasında belli bir günden kaç adet olduğunu bulmak

02 February 2013 Yorum yapılmamış

Geliştirdiğim projede iki tarih aralığında belirli bir günden kaç adet olduğunu bulmam gerekti.

Bunun için iki tarih arasındaki gün farkını alıp, bir tarih listesi oluşturmak için kullanıyorum, daha sonra tarih listesinin içinde istediğim gün’den kaç tane olduğunu sayıyorum.

Örneğin 2013 yılındaki Pazartesilerin adedi için;

var baslangic = new DateTime(2013, 1, 1);
var bitis = new DateTime(2013, 12, 31);
var toplamGun = (int)bitis.Subtract(baslangic).TotalDays + 1;

var tarihListe = Enumerable.Range(1, toplamGun).Select(e => baslangic.AddDays(e));

var gunAdet = tarihListe.Where(e => e.DayOfWeek == DayOfWeek.Monday).Count();

Ayın ilk ve son gününü bulmak için Extension Method

08 July 2010 Yorum yapılmamış

Özellikle raporlama uygulamalarında, aylık dönemlere ait sorgulama yapılırken ilgili ayın ilk ve son günlerinin bilinmesi gerekir.

C# uygulamamızda, yazacağımız basit iki tane extension method ile ayın ilk ve son günlerini bulan kodu basitleştirebiliriz.

public static class ExtensionMethods
{
	public static DateTime AyinIlkGunu(this DateTime dt)
	{
		return new DateTime(dt.Year, dt.Month, 1);
	}
 
	public static DateTime AyinSonGunu(this DateTime dt)
	{
		return dt.AyinIlkGunu().AddMonths(1).AddDays(-1);
	}
}

Extension Method‘ların kullanımı;

static void Main(string[] args)
{
	DateTime BuAy_BaslangicTarihi = DateTime.Now.AyinIlkGunu();
	DateTime BuAy_BitisTarihi = DateTime.Now.AyinSonGunu();

	DateTime GecenAy_BaslangicTarihi = DateTime.Now.AddMonths(-1).AyinIlkGunu();
	DateTime GecenAy_BitisTarihi = DateTime.Now.AddMonths(-1).AyinSonGunu();
}

Örnek kodun tamamı;

using System;

class Program
{
	static void Main(string[] args)
	{
		DateTime BuAy_BaslangicTarihi = DateTime.Now.AyinIlkGunu();
		DateTime BuAy_BitisTarihi = DateTime.Now.AyinSonGunu();

		DateTime GecenAy_BaslangicTarihi = DateTime.Now.AddMonths(-1).AyinIlkGunu();
		DateTime GecenAy_BitisTarihi = DateTime.Now.AddMonths(-1).AyinSonGunu();
  }
}

public static class ExtensionMethods
{
	public static DateTime AyinIlkGunu(this DateTime dt)
	{
		return new DateTime(dt.Year, dt.Month, 1);
	}

	public static DateTime AyinSonGunu(this DateTime dt)
	{
		return dt.AyinIlkGunu().AddMonths(1).AddDays(-1);
	}
}