![]() |
Zeitstring 58:00 in ohne Überlauf in DateTime konvertieren
Hallo,
ich habe zwei TMaskEdit, in die eine Zeit eingegeben wird (einmal Wartezeit sowie eine Ablaufzeit). Wenn ich
Delphi-Quellcode:
eine Zeit von mehr als 24h gebe, gibt es eine Exception. Umgekehrt habe ich das Problem, daß FormatDateTime und andere beim Wandeln in einen String die Stunden abschneiden, die über 24h hinaus gehen.
ActTime := StrToDateTime(Mask.Text);
Gibt es eine Lösung, die Formatierung so durchzuführen daß man auch mit DateTime > 1 arbeiten und das dann auch anzeigen kann? Grüße, Messie |
Re: Zeitstring 58:00 in ohne Überlauf in DateTime konvertie
DateTime ist nichts anderes als ein Float. Alle Werte größer 1 sind mit 24 Stunden (einem Tag) gleichzusetzen. Wenn Du also die Stunden brauchst, dann musst Du mit
![]() ...:cat:... |
Re: Zeitstring 58:00 in ohne Überlauf in DateTime konvertie
Zitat:
Grüße, Messie |
Re: Zeitstring 58:00 in ohne Überlauf in DateTime konvertie
Zitat:
...:cat:... |
Re: Zeitstring 58:00 in ohne Überlauf in DateTime konvertie
Hallo,
"zu Fuss" es wird dir nichts anderes übrig bleiben als eine eigene Routine zu schreiben. Das "zu Fuss" machst du ja nur einmal. Heiko |
Re: Zeitstring 58:00 in ohne Überlauf in DateTime konvertie
Zitat:
Grüße, Messie |
Re: Zeitstring 58:00 in ohne Überlauf in DateTime konvertie
Zitat:
Delphi-Quellcode:
Es kann sein, dass die Parameter bei DecodeTime jetzt nicht stimmen, aber es gibt ja die Hilfe ;)
uses
DateUtils; // oder so ähnlich ;) function ToHourMinuteString(dt: TDateTime): string; var Hours, Minutes, Dummy: Word; begin DecodeTime(Hours, Minutes, Dummy, Dummy); Result := Format('%d:%d', [Trunc(dt) * 24 + Hours, Minutes]); end; ...:cat:... |
Re: Zeitstring 58:00 in ohne Überlauf in DateTime konvertie
Hallo,
er wollte genau das Gegenteil String -> DateTime. Übrigens kann DecodeTime auch nur Stunden bis 24. Folgende Funktion hatte ich mir mal geschrieben. Aber bitte nicht meckern, is elend lange her ;)
Delphi-Quellcode:
function StrToTime_hhhmm(theTimeStr: String; var theDateTime: TDateTime): Boolean;
var Counter : Integer; Hours : Integer; ResultTime: TDateTime; bMinus : Boolean; begin Result := False; theDateTime := 0.0; bMinus := False; try ResultTime:= 0.0; if Pos('-', theTimeStr)=1 then begin Delete(theTimeStr,1,1); bMinus:= True; end; {-- Die Stunden extrahieren--} {erstes Auftreten von : suchen} Counter:= Pos(':', theTimeStr)-1; {Stunden extrahieren } if Counter=-1 then begin Hours := StrToInt(theTimeStr); theTimeStr:= ''; end else begin Hours := StrToInt(Copy(theTimeStr, 1, Counter)); Delete(theTimeStr, 1, Counter); {Löscht hhh} end; {Stunden zu ResultTime addieren } while Hours >= 24 do begin ResultTime := ResultTime+1; Hours := Hours-24; end; {Stunden <24 zurückschreiben} if theTimeStr='' then begin theTimeStr := IntToStr(Hours)+':00'; end else begin theTimeStr := IntToStr(Hours)+theTimeStr; end; {RestString in DateTime umformen} ResultTime := ResultTime + StrToTime(theTimeStr); theDateTime:= ResultTime; if bMinus then theDateTime:= -theDateTime; Result:= True; except on Exception do; end; end; { StrToTime_hhhmm } Heiko [edit=sakura] [delphi]-Tags Mfg, sakura[/edit] |
Re: Zeitstring 58:00 in ohne Überlauf in DateTime konvertie
@hoika: ich habe die Delphi-Tags eingefügt ;)
Zitat:
...:cat:... |
Re: Zeitstring 58:00 in ohne Überlauf in DateTime konvertie
Danke ;)
Wieder was dazugelernt. Das hatte bei entwickler.com nie so richtig funktioniert ;) Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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