iki tarih arasýndaki farký "xx gün xx
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 47
- Kayıt: 17 Ara 2004 12:14
iki tarih arasýndaki farký "xx gün xx
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.
"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.
delphi veya sql de böle bi şey yapmadım ama excel çalışmalarımda
datedif fonk. ile işlemi çözüyoruz.
belki birşeyler uyandırır.
Kod: Tümünü seç
=CONCATENATE(DATEDIF(A1,B1,"md")," gün + ",DATEDIF(A1,B1,"ym")," ay +
",DATEDIF(A1,B1,"y")," yıl")
belki birşeyler uyandırır.
- kadirkurtoglu
- Üye
- Mesajlar: 748
- Kayıt: 22 May 2005 01:20
- Konum: Uzakta Görünen Tepeden...
@mbz060
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..
tarih alanlarını bu şekilde çıkarma veya çarpma veya toplama gibi matematiksel işlemlere tabi tutamazsınız..Edit1.Text:=FloatToStr(Date1-Date2)
Kolay geslin
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..
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
-
- Üye
- Mesajlar: 360
- Kayıt: 10 Nis 2006 09:07
Benim çözümüm şöyle:
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:
Denenmiş bi örnek:
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.
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.
Kod: Tümünü seç
label1.caption:= inttostr( DaysBetween(DateTimePicker1.Date,DateTimePicker2.Date));
-
- Üye
- Mesajlar: 47
- Kayıt: 17 Ara 2004 12:14