![]() |
TDate und TTime zu TDateTime wandeln
Vielleicht zuviel Kaffee getrunken oder zu wenig geschlafen. Oder es fehlt an Erfahrung mit dem Umgang mit Datumswerten?
Zur Auswahl stehen ein Datum TDate und eine Uhrzeit TTime. Wie erzeugt man aus dieser Kombination einen neuen TDateTime, egal welcher Datums- und Uhrzeitformatierung ein System eingstellt hat? Als Notlösung mache ich das so
Delphi-Quellcode:
FS := FormatSettingsCreateEx(',', '.', ':', '/'); // meine eigene Funktion, damit es kürzer wird
DT := StrToDateTime( FormatDateTime('dd/mm/yyyy', Date, FS) + ' ' + TimeToStr(Time, FS), FS) ); |
AW: TDate und TTime zu TDateTime wandeln
Theoretisch
Delphi-Quellcode:
Um sicher zu Gehen:
<DateTime> := <Date> + <Time>;
Delphi-Quellcode:
<DateTime> := Trunc(<Date>) + Frac(<Time>);
|
AW: TDate und TTime zu TDateTime wandeln
Funktioniert wie geschmiert.
Ich hatte zuerst Ausschau nach einem Typen gehalten, dem man ein TDate sowie TTime zuweisen kann aber den scheint es leider nicht zu geben. Funktioniert aber auch so wie von dir beschrieben sehr gut auf die Sekunde genau.
Delphi-Quellcode:
DT := Trunc(System.SysUtils.Date) + Frac(System.SysUtils.Time);
|
AW: TDate und TTime zu TDateTime wandeln
Zitat:
|
AW: TDate und TTime zu TDateTime wandeln
So meinte ich das. Hätte gleich ein Beispiel dranhängen sollen.
Delphi-Quellcode:
Der scheint durch die simple Addition von TDate (Tag N, Uhrzeit 00:00:00) und TTime aber wohl überflüssig zu sein.
DT.Date := System.SysUtils.Date;
DT.Time := System.SysUtils.Time; |
AW: TDate und TTime zu TDateTime wandeln
DateTime ist eine Gleitkommazahl.
Date ist eine Gleitkommazahl, bei der der Nachkommaanteil = 0 ist. Time ist eine Gleitkommazahl, bei der der Vorkommaanteil = 0 ist. Vor dem Komma steht also sowohl bei Date, als auch bei DateTime das Datum, hinter dem Komma stehen bei DateTime und Time die Uhrzeit. Date := Trunc(DateTime) Time := Frac(DateTime) HeutigesDatum := Trunc(Now) AktuelleUhrzeit := Frac(Now) Now := HeutigesDatum + AktuelleUhrzeit |
AW: TDate und TTime zu TDateTime wandeln
Sehr ausführliche und verständliche Erklärung.
Sowas habe ich letztens auch gesucht und hier gefunden. Zeitkonvertierungen sind alles andere als einfach für mich. Für andere wie euch ein Klacks 8-) Aber zum Glück gibt es noch Leute die genau so wenig Ahnung haben wie ich und so einfache Fragen stellen. SOLANGE es nicht ist wie man erkennt ob eine Zahn negativ ist ist alles OK. Hier gibts ähnlichen Lesestoff ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 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 by Thomas Breitkreuz