Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Zamanı hesaplama (Saat)
#4
(21-07-2024, Saat: 00:36)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı:
(20-07-2024, Saat: 23:30)Kral Adlı Kullanıcıdan Alıntı: Merhaba,


Normal şartlarda saat hesaplama yönteminde 02:00:00'dan, 01:00:00 çıkınca kalan sonuç 01:00:00 bu işlem için aşağıdaki kodu kullanıyorum.
 
LabelDuration.Text := TimeToStr(StrToTime(EditIn.Text) - StrToTime(EditOut.Text));



İşin içine freme girince bunu nasıl yaparım 02:00:00:24'den, 01:00:00:12 çıkınca 01:00:00:12 sonucu nasıl alabilirim?


Şimdi den yardımcı olanlara teşekkür ederim.




Aşağıdaki gibi bir kod kullanabilirsiniz:

uses
  System.DateUtils,
 System.TimeSpan;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 ATime1,
 ATime2        : TTime;

 AMilliSecond1,
 AMilliSecond2 : Integer;
 ATimeSpan     : TTimeSpan;
 AValue        : String;
begin
 ATime1 := EncodeTime(02, 00, 00, 24);
 ATime2 := EncodeTime(01, 00, 00, 12);

 AMilliSecond1 := TimeToMilliseconds(ATime1);
 AMilliSecond2 := TimeToMilliseconds(ATime2);

 ATimeSpan := TTimeSpan.FromMilliseconds( Abs(AMilliSecond1 - AMilliSecond2) );

 AValue := Format(
                   '%.2d:%.2d:%.2d:%.2d%',
                   [
                      ATimeSpan.Hours,
                      ATimeSpan.Minutes,
                      ATimeSpan.Seconds,
                      ATimeSpan.Milliseconds
                    ]
                 );

 ShowMessage('Fark:' + AValue);
end;


Hocam Kodları kendime göre düzenledim ancak giriş 01:00:00:14 çıkış 02:00:00:13 olunca yani kare alanı büyük olunca doğru sonucu alamadım.


ll21zl5.png

Bu sorunu nasıl çözerim?



procedure TMainForm.Button1Click(Sender: TObject);
var
  AValue: String;
  ATimeSpan: TTimeSpan;
  ATime1, ATime2: TTime;
  AMilliSecond1, AMilliSecond2: Integer;
  HourI, MinuteI, SecondI, SquareI: Word;
  HourO, MinuteO, SecondO, SquareO: Word;
begin
  HourI := StrToInt(Copy(Edit1.Text, 1, 2));
  MinuteI := StrToInt(Copy(Edit1.Text, 4, 2));
  SecondI := StrToInt(Copy(Edit1.Text, 7, 2));
  SquareI := StrToInt(Copy(Edit1.Text, 10, 2));
  //
  HourO := StrToInt(Copy(Edit2.Text, 1, 2));
  MinuteO := StrToInt(Copy(Edit2.Text, 4, 2));
  SecondO := StrToInt(Copy(Edit2.Text, 7, 2));
  SquareO := StrToInt(Copy(Edit2.Text, 10, 2));
  //
  ATime1 := EncodeTime(HourI, MinuteI, SecondI, SquareI);
  ATime2 := EncodeTime(HourO, MinuteO, SecondO, SquareO);
  //
  AMilliSecond1 := TimeToMilliseconds(ATime1);
  AMilliSecond2 := TimeToMilliseconds(ATime2);
  ATimeSpan := TTimeSpan.FromMilliseconds(Abs(AMilliSecond1 - AMilliSecond2));

  AValue := Format('%.2d:%.2d:%.2d:%.2d%', [ATimeSpan.Hours, ATimeSpan.Minutes, ATimeSpan.Seconds, ATimeSpan.Milliseconds]);
  Showmessage('Fark:' + AValue);
end;
Cevapla


Bu Konudaki Yorumlar
Zamanı hesaplama (Saat) - Yazar: Kral - 20-07-2024, Saat: 23:30
Cvp: Zamanı hesaplama (Saat) - Yazar: Tuğrul HELVACI - 21-07-2024, Saat: 00:36
Cvp: Zamanı hesaplama (Saat) - Yazar: Kral - 21-07-2024, Saat: 10:32
Zamanı hesaplama (Saat) - Yazar: mrmarman - 21-07-2024, Saat: 09:23
Zamanı hesaplama (Saat) - Yazar: mrmarman - 21-07-2024, Saat: 11:13
Cvp: Zamanı hesaplama (Saat) - Yazar: Kral - 21-07-2024, Saat: 11:26
Zamanı hesaplama (Saat) - Yazar: mrmarman - 21-07-2024, Saat: 11:41
Cvp: Zamanı hesaplama (Saat) - Yazar: Kral - 21-07-2024, Saat: 12:11
Zamanı hesaplama (Saat) - Yazar: mrmarman - 21-07-2024, Saat: 12:23
Cvp: Zamanı hesaplama (Saat) - Yazar: Kral - 22-07-2024, Saat: 17:53

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  saat biciminin algilanmasi 12 saat veya 24 saat sadikacar60 1 710 11-11-2024, Saat: 09:36
Son Yorum: hi_selamlar
  Resmi Tatil Hesaplama bydelphi 3 1.603 09-11-2022, Saat: 12:03
Son Yorum: bydelphi
  Dakika farkı hesaplama varyemez 1 1.441 05-05-2022, Saat: 09:57
Son Yorum: RAD Coder
  Tarih Farkı Hesaplama OZCANK 12 6.032 18-11-2021, Saat: 09:32
Son Yorum: COMMANDX
  TIdFtp Toplam Kullanılan Alan Hesaplama Hakkında Yardım glagher 7 3.084 07-11-2021, Saat: 16:02
Son Yorum: mrmarman



Konuyu Okuyanlar: 1 Ziyaretçi