Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Datum berechnen (https://www.delphipraxis.net/117237-datum-berechnen.html)

Basti552 15. Jul 2008 15:10

Re: Datum berechnen
 
Hi,
danke, dass hat bis jetz prima funktioniert, nur ein Problem hätt ich noch, wenn ich jetz noch eine Uhrzeit dazu angeben möchte (StrToDate(//zb.// 11.20 11.07.2008)
wie mache ich das?
Vielen Danke, auch für die Antworten davor! :)

BAsti

marabu 15. Jul 2008 15:13

Re: Datum berechnen
 
Hi,

experimentiere mal mit StrToDateTime(DateTimeToStr(Now)).

Freundliche Grüße

Basti552 15. Jul 2008 15:23

Re: Datum berechnen
 
Zitat:

Zitat von marabu
Hi,

experimentiere mal mit StrToDateTime(DateTimeToStr(Now)).

Freundliche Grüße

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Zeit1 := Now() - StrToDateTime('5.5.05 5:55');
label1.Caption := FloatToStr(Zeit1);
end;
:gruebel: Das is ja wohl keine richtige Zeitangabe, obwohl ich vermute, dass das nur an der Zeit liegen kann

@ oben: was bringt mir das direkte umwandeln von now?

marabu 15. Jul 2008 21:10

Re: Datum berechnen
 
Hallo Sebastian,

Zitat:

Zitat von Basti552
... was bringt mir das direkte umwandeln von now? ...

das war mein Versuch dir auf kürzeste Weise die zwei relevanten Konvertierungsfunktionen für DateTime-Kombiwerte nahe zu bringen.

Zitat:

Zitat von Basti552
... Das is ja wohl keine richtige Zeitangabe, obwohl ich vermute, dass das nur an der Zeit liegen kann ...

Zeit1 ist schon eine Zeitangabe, allerdings kein Zeitpunkt. Lies dazu mal diesen Thread durch: Differenz zweier Datumsangaben

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Zeit1 := Now() - StrToDateTime('5.5.05 5:55');
  //label1.Caption := FloatToStr(Zeit1);
  Label1.Caption := DateTimeToStr2(Zeit1, 'd ');
end;
Gute Nacht

Basti552 16. Jul 2008 14:31

Re: Datum berechnen
 
Ja!, jetzt zeigt er auch die Zeit an, nur leider irgendsoein Datum um 19.00 :gruebel:

Liegt das am Anfangsjahr von 'Delphi' (1800 irgendwas) ?

Danke!

BAsti552

marabu 16. Jul 2008 15:44

Re: Datum berechnen
 
Ja, daran liegt das.

DateTimeToStr() und die anderen Konvertierungsroutinen von Delphi gehen immer davon aus, dass der übergebene Wert ein bestimmter relativer Zeitpunkt ist. Wenn du aber zwei Zeitpunkte voneinander abziehst, was wegen des internen Formats DOUBLE wunderbar funktioniert, dann ist das Ergebnis eine Mengenangabe mit der Einheit "Tag". Wenn der Abstand der beiden voneinander subtrahierten Zeitangaben z.B. genau 48 Stunden ist, dann ist das Ergebnis 2.0 - übergeben an DateTimeToStr(2.0) erhältst du dann "01.01.1900 00:00:00".
Weil du die Tage eines Zeitabstand (einer Zeitmenge, eines Zeitintervalls) nicht als Datum interpretieren darfst, hatte ich dir die Funktion DateTimeToStr2() nahegelegt. Die Hintergründe dazu stehen in dem verlinkten Thread.

Das Refernzdatum ist der Beginn (0 Uhr) des 30.12.1899, was du durch DateTimeToStr(0) leicht feststellen kannst. Im Beitrag #6 hatte ich Sylvester 1899 angegeben, was falsch ist - ich hatte aus Versehen bei DateDelta nachgeschaut. In meiner Delphi Online-Hilfe wird bei TDateTime der Referenzzeitpunkt als 30.12.1899 12:00 Uhr angegeben, was auch falsch ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:07 Uhr.
Seite 2 von 2     12   

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