C# & ASP.NET İki Tarih Arasındaki Çalışma Günlerini Hesaplama
5273 görüntüleme

Merhabalar,

Bu yazımızda verilen iki tarih arasındaki çalışma günlerini hesaplayan bir preje yapacağız. İnternette hafta sonlarını çıkartan kodlar mevcut biz hem hafta sonunu hemde bir diziye atadığımız resmi tatilleri çıkartıp çalışma gün sayısını hesaplayacağız.

Web projesi açıyoruz, default.aspx sayfamıza iki tane textbox, bir buton ve bir label atıyoruz. Textboxlara CalendarExtender ekliyoruz ki tarihimizi otomatik olarak ekleyebilelim. Projeyi ekte paylaşacağım için pek fazla açıklama yapmıyorum. İndirip incelediğinizde daha net anlaşılacaktır.

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    List<DateTime> ResmiTatil = new List<DateTime>();//Resmi tatilleri ekleyeceğimiz listemizi oluşturuyoruz.

    protected void Page_Load(object sender, EventArgs e)
    {
        //oluşturduğumuz listemize resmi tatilleri ekliyoruz. 
        ResmiTatil.Add(Convert.ToDateTime("14/03/2014"));
        ResmiTatil.Add(Convert.ToDateTime("15/03/2014"));
        ResmiTatil.Add(Convert.ToDateTime("16/03/2014"));
        ResmiTatil.Add(Convert.ToDateTime("17/03/2014"));
        ResmiTatil.Add(Convert.ToDateTime("18/03/2014"));
        ResmiTatil.Add(Convert.ToDateTime("23/04/2014"));
        ResmiTatil.Add(Convert.ToDateTime("01/05/2014"));

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        DateTime ilkT = Convert.ToDateTime(txtIlkTarih.Text);
        DateTime sonT = Convert.ToDateTime(txtSonTarih.Text);

        int resmiTatil = 0;
        foreach (DateTime rTatil in ResmiTatil)//Resmi tatil listemizi foreach ile geziyoruz
        {
            //resmi tatiller hafta sonuna denk geliyorsa aşagıdaki metod ile hafta sonralını çıkarttığımızdan tekrar saymasına gerek yok
            //hafta içine denk gelen resmi tatilleri sayıyoruz.
            if ((rTatil.ToString("dddd") != "Cumartesi" && rTatil.ToString("dddd") != "Pazar") && (rTatil >= ilkT && rTatil <= sonT))
            {
                resmiTatil++;
            }

        }
        int sonuc = CalismaHesapla(ilkT, sonT);
        int tsonuc = resmiTatil;

        lblSonuc.Text = "<b>Hafta İçi gün Sayısı: </b>" + sonuc.ToString() + " <br /><b>Hafta İçine Denk Gelen Resmi Tatil Günü:</b> " + tsonuc.ToString() + "<br /><b>Toplam Çalışma Günü: </b>" + (sonuc - tsonuc).ToString();
    }

    public static int CalismaHesapla(DateTime basTarih, DateTime bitTarih)//bu metod ile iki tarih arasındaki çalışma günlerini sayıyoruz
    {
        DateTime geciciTarih = basTarih;
        int gunSayi = 0;
        string gun = string.Empty;
        while (geciciTarih <= bitTarih)
        {
            gun = geciciTarih.ToString("dddd");
            if (gun != "Cumartesi" && gun != "Pazar")
            {
                gunSayi++;
            }
            geciciTarih = geciciTarih.AddDays(1);
        }
        return gunSayi;
    }

}

Proje dosyasını indirmek için tıklayınız.

Başka bir makalede görüşmek üzere hoşça kalın.

Bildiklerimizi paylaşıyoruz, bilmediklerimizi öğreniyoruz.
biz bunları yapıyoruz ya siz...
© 2016 Bildiklerimiz.Net Tüm hakları saklıdır.