![]() |
Datum berechnen
:oops: Hi,
ich bins mal wieder und hab leider ein Problem :oops: : Wie kann ich, wenn ich einen Tag hab (z.b. den 14.07.2008) berechnen, wie viele Tage(stunden) seit diesem Tag vergangen sind? wäre äußerst dankbar Basti552 |
Re: Datum berechnen
Falls deine Delphi-Version mindestens Delphi 7 ist, könntest du dir mal die Unit "DateUtils" anschauen. Die hat fertige Funktionen wie HoursBetween(AThen, ANow: TDateTime) oder auch DaysBetween(AThen, ANow: TDateTime).
|
Re: Datum berechnen
Zitat:
|
Re: Datum berechnen
Welches hast Du dann? Trag es doch bitte ins Profil ein. :)
|
Re: Datum berechnen
Guten Abend,
die Funktion gibt es auch schon in Delphi 6, habe leider keine ältere Version bei mir laufen. Grüße Klaus |
Re: Datum berechnen
Hallo Sebastian,
unabhängig von deiner Delphi-Version kannst du eine Datumsangabe mit StrToDate() in das interne Format umwandeln und den erhaltenen Wert von Now() abziehen. Das interne Format gibt die Anzahl der Tage seit einem bestimmten Referenzdatum (31.12.1899) an, der Nachkommateil 0.5 bedeutet dann 12 Stunden. StrToDate('14.07.2008') liefert dir den Zeitwert für 0 Uhr, Now() liefert dir den augenblicklichen Zeitwert inklusive Datum. Freundliche Grüße |
Re: Datum berechnen
Zitat:
Delphi-Quellcode:
?
Zeit := StrToDate('11.07.2008') - Now();
Danke schonmal für die Antworten P.S.: Hab Delphi 3^^ |
Re: Datum berechnen
Du hast Minuend und Subtrahend vertauscht - denke nochmal drüber nach.
|
Re: Datum berechnen
Zitat:
Zeit := Now() - StrToDate('11.07.2008'); (So, das wird mir nich nochma passiern :D ;) ) |
Re: Datum berechnen
Datum- und Zeitwerte sind in Delphi (und nicht nur dort) Fließkomma-Zahlen.
Wenn du Zeit als Variable vom Typ TDateTime deklarierst, dann klicke den Typbezeichner mal an und drücke dann F1 um die kontextsensitive Hilfe aufzurufen. Dort wird dir das DateTime-Konzept von Delphi nochmal mit anderen Worten erklärt. Gute Nacht |
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 |
Re: Datum berechnen
Hi,
experimentiere mal mit StrToDateTime(DateTimeToStr(Now)). Freundliche Grüße |
Re: Datum berechnen
Zitat:
Delphi-Quellcode:
:gruebel: Das is ja wohl keine richtige Zeitangabe, obwohl ich vermute, dass das nur an der Zeit liegen kann
procedure TForm1.Timer1Timer(Sender: TObject);
begin Zeit1 := Now() - StrToDateTime('5.5.05 5:55'); label1.Caption := FloatToStr(Zeit1); end; @ oben: was bringt mir das direkte umwandeln von now? |
Re: Datum berechnen
Hallo Sebastian,
Zitat:
Zitat:
![]()
Delphi-Quellcode:
Gute Nacht
procedure TForm1.Timer1Timer(Sender: TObject);
begin Zeit1 := Now() - StrToDateTime('5.5.05 5:55'); //label1.Caption := FloatToStr(Zeit1); Label1.Caption := DateTimeToStr2(Zeit1, 'd '); end; |
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 |
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:30 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