Tarih ve saat hesaplama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
dost
Üye
Mesajlar: 104
Kayıt: 08 Oca 2004 11:33

Tarih ve saat hesaplama

Mesaj gönderen dost »

merhaba,

başlanğıç tarihi ve saati ile
bitiş tarihi ve saati arasındaki
farkı kodla nasıl bulabilirim.

teşekkürler.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Re: Tarih ve saat hesaplama

Mesaj gönderen ikutluay »

dost yazdı:merhaba,

başlanğıç tarihi ve saati ile
bitiş tarihi ve saati arasındaki
farkı kodla nasıl bulabilirim.

teşekkürler.
daysbetween
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Farkın türü ne olacak. Eğer gün ise, tar2-tar1 ile de bulabilirsin. Sonucu da neye istersen çevirebilirsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Mesaj gönderen csunguray »

Delphi'de tarih değerleri bir extended sayı şeklinde tutulur. Virgülden önceki bölüm günü, virgülden sonraki bölüm saati gösterir. Örneğin bugünün değeri Date fonksiyonu ile alınabilir 33768.0 gibi bir değer olur. Şu anki saatin değeri Time fonksiyonu ile alınabilir ve 0.324345 gibi bir değer olur. Şu anın hem tarih hem saat olarak değeri Now fonksiyonu ile alınır ve 33768.324345 gibi bir değer gelir. Bugün saat öğlen 12:00 değeri 33768.5 gibi bir değerdir. Bugünün yarısı bitmiş olduğu için virgülden sonra 0.5 gibi bir değer gelmektedir. İki an arasındaki saniye farkını almak için Now fonsiyonun göndermiş olduğu iki değer çıkarılır ve çıkan sonuç gün biriminden saniye birmine çevrilir. 1 gün = 86400 saniye veya tersten alırsak 1 saniye = 0.00001157407407 gün.

Kolay gelsin.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Kestirmeden virgülün sağı da solu da günü gösterir diyelim. 12.5 değeri 12.5 gün demektir ki yarım gün demek 12:00 saatine denk gelir. Bknz->ShowMessage(DateTimeToStr(0))->30.12.1899'u gösterir. 12.5'i bu tarihe eklersek ShowMessage(DateTimeToStr(0+12.5))->11.01.1900 12:00:00 gösterir. Bu teknik çok hoşuma gittiğinden sık sık anlatmaktan zevk alıyorum nedense :) .
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
dost
Üye
Mesajlar: 104
Kayıt: 08 Oca 2004 11:33

Mesaj gönderen dost »

merhaba,

ilgilenen bilgi veren arkadaşlara çok teşekkür ederim.
dost
Üye
Mesajlar: 104
Kayıt: 08 Oca 2004 11:33

Mesaj gönderen dost »

//başlanğıç tarih ve saat
Edit1.text := DateToStr(Date);
Edit2.text := TimeToStr(Time);

//bitiş tarih ve saat
Edit3.text := DateToStr(Date);
Edit4.text := TimeToStr(Time);

t1 := (StrToDate(Edit1.Text) + StrToTime(Edit2.Text));
t2 := (StrToDate(Edit3.Text) + StrToTime(Edit4.Text));
t3 := (t2 - t1);
Edit5.Text := FloatToStr(t3);

Sonuç: 4,08333333333333

virgülden sonraki saat,dakika ve saniye yi
nasıl hesaplayabilirim

teşekkürler
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

bu işte mantık hatası var....

bir gunu ele alırken saniyeye cevirmelisin...

(gun*86400)+(saat*3600)++(dk*60)+saniye gibi.

biraz uğraşacaksın ama bu mantık her yerde gecer akcedir
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

TimeToStr ile kalanı direk görebilirsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
dost
Üye
Mesajlar: 104
Kayıt: 08 Oca 2004 11:33

Mesaj gönderen dost »

var
t1, t2, t3, t4: TDateTime;
Saat, Dakika, Saniye, Salise: Word;
begin
t1 := (StrToDate(Edit1.Text) + StrToTime(Edit2.Text));
t2 := (StrToDate(Edit3.Text) + StrToTime(Edit4.Text));
t3 := DaysBetween(t2, t1);
Edit5.Text := FloatToStr(t3) + ' Gün';

t4 := (t2 - t1);
DecodeTime(t4, Saat, Dakika, Saniye, Salise);
Edit6.Text := InttoStr(Saat) + ' Saat ' + IntToStr(Dakika) + ' Dakika ' + IntToStr(Saniye) + ' Saniye ';
end;


Sonuç:

2 Gün

1 Saat 50 Dakika 30 Saniye


ilgilenen arkadaşlara çok teşekkür ederim
Cevapla