iki tarih arasýndaki farký "xx gün xx

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
princeoftides
Üye
Mesajlar: 47
Kayıt: 17 Ara 2004 12:14

iki tarih arasýndaki farký "xx gün xx

Mesaj gönderen princeoftides »

baþlangýç tarihinden örneðin "01.01.2003" günümüze kadar geçen zamaný
"xx gün xx ay xxxx yýl" geçmiþ þeklinde nasýl hesaplatýrýz? veya günümüzden "01.01.2009" tarihine "xx gün xx ay xxxx yýl" kalmýþ þekline nasýl hesaplatýrýz?

yardýmlarýnýz için þimdiden teþekkürler.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

delphi veya sql de böle bi şey yapmadım ama excel çalışmalarımda

Kod: Tümünü seç

=CONCATENATE(DATEDIF(A1,B1,"md")," gün + ",DATEDIF(A1,B1,"ym")," ay + 
",DATEDIF(A1,B1,"y")," yıl")
datedif fonk. ile işlemi çözüyoruz.

belki birşeyler uyandırır.
Kullanıcı avatarı
mbz060
Üye
Mesajlar: 19
Kayıt: 18 Ağu 2003 02:24
İletişim:

Mesaj gönderen mbz060 »

Edit1.Text:=FloatToStr(Date1-Date2)
Kolay geslin
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

@mbz060
Edit1.Text:=FloatToStr(Date1-Date2)
Kolay geslin
tarih alanlarını bu şekilde çıkarma veya çarpma veya toplama gibi matematiksel işlemlere tabi tutamazsınız..

en iyi yöntem her bir değeri yıl, ay, gün ayrı ayrı hesaplamak gerekiyor. tabi burda ay 12 max sınırına gün de max 31 sınırına göre hesap yapılmalıdır..
Kullanıcı avatarı
ieski
Üye
Mesajlar: 20
Kayıt: 09 Tem 2003 08:19

Mesaj gönderen ieski »

bunu visual basicte yapmıştım..

Kod: Tümünü seç

Public Function tar(bsl As Date, snt As Date) as string 
Dim temp As Date
Dim Yil As Integer
Dim Ay As Integer
Dim Gun As Integer

    yil = Year(snt) - Year(bsl)
    
    temp = DateAdd("yyyy", yil, bsl)
    
    If temp > snt Then
        ay = DateDiff("m", snt, temp)
        If ay > 0 Then
            yil = yil - 1
            temp = DateAdd("m", -ay, temp)
            ay = 12 - ay
        End If
    Else
        ay = DateDiff("m", temp, snt)
        temp = DateAdd("m", ay, temp)
    End If
    
    If temp > snt Then
        gun = DateDiff("d", temp, snt)
        If gun > 0 Then
            If ay = 1 Then
                yil = yil - 1
                ay = ay + 12
            End If
            ay = ay - 1
            gun = 30 - gun
        End If
    End If
    
    If temp < snt Then
        gun = DateDiff("d", temp, snt)
        If gun >= 30 Then
            ay = ay + 1
            If ay > 12 Then
                ay = ay - 1
                yil = yil + 1
            End If
        End If
    End If
   
   tar= gun & " Gun " & ay & " Ay " &  yil & " Yıl"

End Function
kahraman1285
Üye
Mesajlar: 360
Kayıt: 10 Nis 2006 09:07

Mesaj gönderen kahraman1285 »

Benim çözümüm şöyle:

Kod: Tümünü seç

DaysBetween : verilen iki DateTime arasındaki geçen gün sayısını döndürür.Sonuç İnteger'dır
Bu fonksiyonda saatte önemlidir. 24 saat geçmiş olmalıdır.

Yani "02/09/2002 11:54:00" ile "03/09/2002 11:53:59" arasındaki gün sayısı 24 saat dolmadığı için 0 dır.
yukardaki kod tam değer döndürür.

uses kısmına "dateutils" eklemeyi unutmayın.

eğer küsuratlı değer almak istiyorsanız:

Kod: Tümünü seç

DaySpan : Verilen iki DateTime değeri arasındaki gün farkını bulur.
DaysBetween fonksiyonundan farkı, küsratlı değerler döndürür.

Yani iki tarih arasında 1 gün 23 saat ve 58 dakika fark varsa DaySpan : "1,998611" değerini döndürür,sonuç float'tır

DaysBetween gün tamamlanmadığı için 1 değerini döndürür.
Denenmiş bi örnek:

Kod: Tümünü seç

label1.caption:= inttostr( DaysBetween(DateTimePicker1.Date,DateTimePicker2.Date));
princeoftides
Üye
Mesajlar: 47
Kayıt: 17 Ara 2004 12:14

Mesaj gönderen princeoftides »

ilginiz için teşekkür ederim arkadaşlar
Cevapla