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.
https://play.google.com/store/apps/developer?id=ONGUN
WWW
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.
https://play.google.com/store/apps/developer?id=ONGUN
WWW
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.
https://play.google.com/store/apps/developer?id=ONGUN
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Gün dönümü olan bir randevu sisteminde saat bazlı kapama nasıl yapılır ? adelphiforumz 4 1.845 06-05-2021, Saat: 09:48
Son Yorum: adelphiforumz
  saat toplama erdogan 9 3.312 24-12-2020, Saat: 17:21
Son Yorum: erdogan
  Balirli saat aralığında kodu çalıştırmak onurakman 13 6.679 21-05-2020, Saat: 18:01
Son Yorum: mrmarman
  Nesneler arasındaki ilşkiyi/bağlantıyı tespit etmek 41linea41 2 2.112 14-09-2019, Saat: 13:09
Son Yorum: 41linea41
  ÇÖZÜLDÜ-timer kullanmadan saat kontrolü mümkünmü? sadikacar60 3 2.848 10-09-2019, Saat: 22:19
Son Yorum: sadettinpolat



Konuyu Okuyanlar: 1 Ziyaretçi