Tüm Platformlar için Hızlı Uygulama Geliştirme Kitabı... Delphi
Ön Sipariş Talebinde Bulunan Üyelerimiz
Sipariş Talebinde Bulunan Üyelerimiz

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
İki saat arasındaki fark
#1
String değer olarak girilen giriş ve çıkış saatlerinin arasındaki saat farkını, yani kaç saat çalıştığını nasıl bulabilirim?   
17:36 - 08:00  arasındaki farkı 09:36 olarak döndürecek.
Cevapla
#2
(12-01-2019, Saat: 16:16)ssmr Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlString değer olarak girilen giriş ve çıkış saatlerinin arasındaki saat farkını, yani kaç saat çalıştığını nasıl bulabilirim?   
17:36 - 08:00  arasındaki farkı 09:36 olarak döndürecek.

Merhabalar

Forum içinde arama : Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Deneme fırsatım olmadığı için Üzgünüm. 

Function FullTimeToStr(StartDT,EndDT:TDateTime):STRING;
 VAR
   sTemp            : STRING;
   Days,Hours,iTemp : INTEGER;
   TimeStart,TimeEnd: TTime;
 BEGIN
   TimeStart:= StartDT;
   TimeEnd  := EndDT;
   IF TimeStart<0 THEN TimeStart:=TimeStart*-1; 
   IF TimeEnd<0 THEN TimeEnd:=TimeEnd*-1; 
   sTemp    := TimeToStr(TimeStart-TimeEnd);
   iTemp    := StrToInt(Copy(sTemp,1,2));
   Days     := INT(EndDT)-INT(StartDT);
   IF Days <0 Then Days := Days *-1; 
   Hours:=Days*24+iTemp;
   Result:=IntToStr(Hours)+COPY(sTemp,3,5);
 END;
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#3
Days := INT(EndDT)-INT(StartDT); bu satırda aşağıdaki hatayı alıyorum.
E2010 Incompatible types: 'Integer' and 'Extended'
Cevapla
#4
Wink 
Cevap belki de o kadar karmaşık değildir Smile , sanki şu da işinizi görür gibi.
ShowMessage(TimeTostr(TTime(StrToTime( '17:36')-StrToTime('08:00'))));
Herhangi bir basit problem, hakkında yeterince toplantı yapılarak, çözümsüz hale getirilebilir.

Cevapla
#5
(12-01-2019, Saat: 21:06)savasabd Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlCevap belki de o kadar karmaşık değildir Smile , sanki şu da işinizi görür gibi.
ShowMessage(TimeTostr(TTime(StrToTime( '17:36')-StrToTime('08:00'))));

Haklısınız. Kesinlikle basit düşünmek gerekiyormuş. Bilgi az olunca çok basit şeyleri karmaşık çözümler ile çözmeye çalışıyorum.Mesajınızdan önce bu basitliği farkettim lakin giriş saati çıkış saatinden büyük durumlarda işler karışıyor. Şu şekilde hallettim gibi. Kod karmaşası için özür dilerim.

var giris,cikis,z,topsaat:string;
begin
giris:=txt_giris.text;
cikis:=txt_cikis.text;
if strtotime(cikis)<strtotime(giris)  then
  begin
  z:='23:59';//datetime 24:00 olamayacağı için
  //Çıkış saati giriş saatinden küçük ise(giriş:23:00, çıkış:08:00 gibi
  //giriş saatini 23:59 dan çıkartıp incminute ile 1 dakika ekleyerek
  //giris saatine gece 00:00 a kadar kaç saat çalıştığını atıyor.
  giris :=timetostr(incminute(strtotime(z)-strtotime(giris),+1));
  //şimdi de saat 00:00 dan kaça kadar çalıştığını bulmak için çıkış saatinden
  //00:00 ı çıkartıp cikis değişkenine atıyoruz
  z:='00:00';
  cikis :=timetostr(strtotime(cikis)-strtotime(z));
  //giris ve cikis değişkenlerini toplatıp topsaat değişkenine atıyoruz
  topsaat:=timetostr(strtotime(cikis)+strtotime(giris));
  //fark değişkenini de formatdatetime ile text imize yazdırıyoruz.
  txt_saattoplami.Text:=formatdatetime('hh:mm',strtotime(topsaat));
  end
  else
  //eğer çıkış saati giriş saatinden büyükse aşağıdaki kod saat farkını veriyor
  txt_saattoplami.Text:=formatdatetime('hh:mm',strtotime(cikis)-strtotime(giris));
end;
Cevapla
#6
ShowMessage(TimeTostr(TTime(StrToDateTime( '12.01.2019 08:00:00')-StrToDateTime('11.01.2019 23:00:00'))));
Tarihi de işin içine katabilirsiniz, yukardaki kod da aynı işi yapar, üstelik büyük küçük gibi dertleriniz de olmaz.
Herhangi bir basit problem, hakkında yeterince toplantı yapılarak, çözümsüz hale getirilebilir.

Cevapla
#7
Evet ama tarih olmadan, saatlerin 23:00 gibi string olarak girildiği textboxlardan alındığını düşünürsek sizin kodunuz doğru sonucu vermez (diye düşünüyorum). Ben hiç tarih olmadan bu sorunu nasıl çözerim diye düşünmüştüm. Başardım da galiba. Biz amatörler size göre basit şeyleri aşınca acayip mutlu oluyoruz vallahi. Saygılar.
Cevapla
#8
Estağfurullah, maksat size yardım etmek, değilse benim tavsiyede bulunmam aramızdaki seviye farkından değil, belki o konuda daha önceden tecrübe etmiş olmamdandır.Sizin tecrübe ettiğiniz bir şeyden de ben yararlanırım.Bu arada aşağıdaki kod  tarihi kolayca almak konusunda fikir verebilir.
ShowMessage(TimeTostr(TTime(StrToDateTime( DateTostr(TDate(now)+1)+'08:00:00')-StrToDateTime(DateTostr(TDate(now))+'23:00:00'))));
Herhangi bir basit problem, hakkında yeterince toplantı yapılarak, çözümsüz hale getirilebilir.

Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Saat başı kontrol ? Bay_Y 24 1.054 30-10-2018, Saat: 09:50
Son Yorum: Bay_Y
  Activex ile normal kurulum arasındaki fark Lord_Ares 4 525 11-03-2018, Saat: 23:15
Son Yorum: Lord_Ares
  iki tarih ve saat arasındaki ay gün ve saat farkı erdogan 2 683 31-12-2017, Saat: 19:25
Son Yorum: adelphiforumz



Konuyu Okuyanlar: 1 Ziyaretçi