Forum
Merhaba Arkadaşlar,
aşağıdaki kod ile iki tarih arasında hafta sonlarını dikkate alarak farkı alıyorum. yalnız şöle bir sorun var.
01.11.2012 ile 20.11.2012 arasında tarih farkını aldığım da 14 gün olarak alıyorum. burada problem yok.
yalnız tam tersini uyguladığım da yani
20.11.2012 ile 01.11.2012 yazdığım da tarih farkını alamıyorum. kodları inceleyebilir misiniz. acaba nerede hata yapıyorum.
Dim startdate1 As DateTime = TextBox1.Text
Dim enddate1 As DateTime = TextBox2.Text
Dim cnt1 As Integer = 0
While startdate1 <= enddate1
If Not (startdate1.DayOfWeek = DayOfWeek.Sunday OrElse startdate1.DayOfWeek = DayOfWeek.Saturday) Then
cnt1 += 1
End If
startdate1 = startdate1.AddDays(1)
End While
TextBox3.Text = cnt1
İyi günler,
Analadığım kadarı ile hafta sonlarını çıkartıp çalışma günlerini hesap ettiriyorsun. Burada önemli olan kullanıcıyı yönlendirmen eğer kullanıcı ilk tarihi son tarihten büyük seçiyorsa onu uyarmalısın. Ben c# da senin için yazdım. VB kullanmadığım için onda yazmadım. Ama eğer illaki ilk tarihi son tarihten büyük seçiyorsa o zaman if li ifade ekleyip kontrol yapmalısın. ve akabindede aşağıya yazdığın gün hesaplamayı orayada yazmalısın
DateTime ilktarih = dateTimePicker1.Value;
DateTime sontarih = dateTimePicker2.Value;
int cnt1 = 0;
if (sontarih < ilktarih)
{
MessageBox.Show("son tarih, ilk tarihten küçük olamaz.");
return;
}
while (ilktarih <= sontarih)
{
if (!(ilktarih.DayOfWeek == DayOfWeek.Sunday || ilktarih.DayOfWeek == DayOfWeek.Saturday))
{
cnt1 += 1;
}
ilktarih = ilktarih.AddDays(1);
}
textBox1.Text = cnt1.ToString();
Ragıp Bey cevap verdiğiniz için teşekkürler.
yalnız şöyle bir durum var. program da planlama yapılıyor. örneğin diyelim ki. 10.11.2012 için bir kayıt giriyor. yazılım 10.11.2012 tarihine 4 gün kaldı yazıyor. daha sonra 14.11.2012 tarihine geldiğimiz de 4 gün geçtiğini söylemesi lazım. bana 0 (sıfır) dan düşük rakaml lazım. 🙂
Anladım O zaman algoritmamız şu şekilde ilerlesin.
1. Eğer İlk tarih son tarihten küçükse
Evet: normal kalan gün hesabı yaptın değeri pozitif çıkartsın.
Hayır: (Eğer büyükse) arada kaç gün geçtiğine baksın (Cumartesi Pazar hariçse bunları çıkartarak). While ile döngü yaptırarak saydırın ve sonucu -1 ile çarptırıp ekrana verin. İşlem bu kadar.
Yani yapmanız gerek ilk işlem tarih büyükmü küçükmü daha sonra koşula göre işlemi yaptırmanız yeterli