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ı: 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.

Merhabalar

Forum içinde arama : http://www.delphican.com/search.php?acti...order=desc

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ı: 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'))));

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


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  [ÇÖZÜLDÜ]Tarih ve Saat aralığı sorgulama wiseman 39 973 23-04-2019, Saat: 17:17
Son Yorum: wiseman
  Saat seconds ahmetb 2 224 17-02-2019, Saat: 12:33
Son Yorum: ahmetb
  podesktopcenter (vs) poscreencenter Arasındaki Fark [ÇÖZÜLDÜ] SenayAkgun 6 432 30-01-2019, Saat: 00:00
Son Yorum: SenayAkgun
  Saat başı kontrol ? Bay_Y 24 1.748 30-10-2018, Saat: 09:50
Son Yorum: Bay_Y
  Activex ile normal kurulum arasındaki fark Lord_Ares 4 738 11-03-2018, Saat: 23:15
Son Yorum: Lord_Ares



Konuyu Okuyanlar: 1 Ziyaretçi