![]() |
Zeit runden?
Hi,
Habe mal eine Frage: Wie kann ich einen TDateTime Wert auf 5 Min genau (ab)runden? Dieser Code zeigt beispielsweise 21.05.2008 21.01 an. Die Zeit soll aber so abgerundet werden: 21.05.2008 21.00
Delphi-Quellcode:
FormatDateTime('dd.mm.yyyy hh:mm', Now)
|
Re: Zeit runden?
Hi API,
suche hier mal nach DateTimeToMinutes - hilft dir das weiter? |
Re: Zeit runden?
Hallo,
ich könnte mir sowas vorstellen:
Delphi-Quellcode:
Getippt und nicht getestet.
uses
DateUtils; function IntervallStart(dt: TDateTime; size: Word): TDateTime; var n: Cardinal; begin n := MinutesBetween(dt, 0) div size * size; Result := n * OneMinute; end; Freundliche Grüße |
Re: Zeit runden?
Ich habe es nun so gemacht. Vielleicht gibt es eine einfachere Möglichkeit?
Delphi-Quellcode:
Edit: Danke Achim, werde deinen Code noch ausprobieren
procedure RoundDownTo5Min(var h, m: Word);
begin m := 5 * Trunc((m - 2.5) / 5.0); if m = 60 then begin Inc(h); m := 0; end; end; DecodeDateTime(Now, AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond); RoundDownTo5Min(AHour, AMinute); ATime := EncodeDatetime(AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond); label1.Caption := FormatDateTime('dd.mm.yyyy hh:mm', ATime)); |
Re: Zeit runden?
Hi,
und was passiert um 23:59? Mfg FAlter |
Re: Zeit runden?
Ungetestet, sollte aber gehen ;-)
Delphi-Quellcode:
function TimeFloor5Min(time:TDateTime):TDateTime;
const Min5 = 5.0 / (24.0*60.0); begin Result := Trunc(time / Min5) * Min5; end; |
Re: Zeit runden?
Hallo,
kann man das nicht so lösen?
Delphi-Quellcode:
Bis bald Chemiker
procedure TForm1.Button2Click(Sender: TObject);
var zeit : Extended; begin zeit := StrToTime(Edit1.Text); zeit := Round(zeit*ZEIT_5MINUTEN)/ZEIT_5MINUTEN; // ZEIT_5MINUTEN = 12 * 24 Label1.Caption := FormatDateTime('t', zeit); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz