Yazar Ol Yazar Girişi
Yazar Girişi
E-Posta Adresi
Şifre
Asp.Net PHP & MySQL .Net MVC C# PhotoShop CSS jQuery AlgoritmA MsSQL Server HTML Ruby
- Kategoriler -
C# & ASP.NET İki Tarih Arasındaki Çalışma Günlerini Hesaplama

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.

Sosyal Hesabında Paylaş

6476 görüntüleme

Yorumlar
Adınız Soyadınız
Mail Adresiniz
Doğrulama Kodu

Bildiklerimiz.Net Bildiklerimizi paylaşıyoruz, bilmediklerimizi öğreniyoruz. biz bunları yapıyoruz ya siz...

© 2016 Bildiklerimiz.Net Tüm hakları saklıdır.
bir Bildiklerimiz projesidir.