Forum

tarih farkı alırken...
 
Bildirimler
Hepsini Temizle

tarih farkı alırken problem.

4 Yazılar
2 Üyeler
0 Reactions
535 Görüntüleme
(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

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

 
Gönderildi : 05/11/2012 16:13

(@RagipUNAL)
Gönderiler: 171
Estimable Member
 

İ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();

 
Gönderildi : 06/11/2012 16:13

(@Anonim)
Gönderiler: 0
Konu başlatıcı
 

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. 🙂

 
Gönderildi : 06/11/2012 18:48

(@RagipUNAL)
Gönderiler: 171
Estimable Member
 

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

 

 
Gönderildi : 06/11/2012 23:17

Paylaş: