Yazar Ol Yazar Girişi
Yazar Girişi
E-Posta Adresi
Şifre
Şifremi Unuttum
Asp.Net .Net MVC PHP & MySQL C# PhotoShop CSS jQuery AlgoritmA MsSQL Server HTML Ruby
- Kategoriler -
Türkçe
English
German
Tüm 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ş

9625 görüntüleme

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

Şinasi Çekemci 6 ay önce yazıldı.

Sitelere çok fazla yorum atma yanlısı değilimdir lakin,

Tam da böyle bir algoritmaya sahip bir yapı arıyordum ki sitenizde ki bu örneği gördüm. 

Gerçekten çok teşekkür ederim. 

Üzerine ekleme yaparak kendi projeme entegre ettim ve kusursuz bir şekilde admin panelinden girilen özel günlere göre, kullanıcının seçtiği tarih aralığını denetleyerek o günler için fazladan ücret tahsil edebiliyorum. 

teşekkürler, iyi çalışmalar.

Faruk Karaman6 ay önce cevap verdi.

yardımcı olabildiysek ne mutlu, kolay gelsin


Murat Yavuz 2 ay önce yazıldı.

Merhabalar, Öncelikle harika bir proje olmuş ama birtürlü yapmayı başaramadım projenin hazır halini rica etsem bana gönderme şansınız varmıdır veya tekrar update yapabilirmisiniz dönem ödevim için c# asp.net "web" Projesi bunun gibisini göremedim bu programlamadada yeni olduğum için malesef başaramadım yardımcı olursanız çok sevinirim.

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

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