Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Differenz zwischen Zeit und Datum (https://www.delphipraxis.net/138024-differenz-zwischen-zeit-und-datum.html)

TM4rkuS 2. Aug 2009 14:04


Differenz zwischen Zeit und Datum
 
Also, ich möchte ein Programm erstellen (für ein Browsergame =P), dass mir die Differenz zweier Daten liefert.

Also, einmal habe ich Beispielsweise den 01.01.2010 mit der Uhrzeit 01:00:00 und einmal habe ich sozusagen den 00.00.0000 mit der Uhrzeit 01:10:00. Ich will jetzt, dass der die 01:10:00 von dem ersten Datum abzieht, so, dass ich den 31.12.2009 mit der Uhrzeit 23:50 erhalte und das sollte natürlich mit jedem Datum und jeder Zeit funktionieren. Ich hab schon versucht, das ganze mit if und case of und solchem Zeugs zu lösen (if sekunden >= 60 then Sekunden := Sekunden mod 60; usw.), aber das ist so viel schreibarbeit und ich krieg das nicht hin ;-) Abgesehen davon gibt es garantiert eine einfacherer Lösung für dieses Problem =)
Freue mich über jede Hilfe

BackOrifice 2. Aug 2009 14:06

Re: Differenz zwischen Zeit und Datum
 
Die klassische Unit DateUtils hat eigentlich alles was du für Datum + Uhrzeit brauchst. Nebenbei ist ein TDateTime vom Datentyp Extended (Hilfe lesen), so dass du ganz leicht die Differenz zwischen 2 TDateTimes ermitteln kannst: d3 := d2 - d1

TM4rkuS 2. Aug 2009 14:14

Re: Differenz zwischen Zeit und Datum
 
ist das hier das richtige? http://www.delphibasics.co.uk/RTL.as...dCode1=Yes#Ex1

TM4rkuS 2. Aug 2009 14:58

Re: Differenz zwischen Zeit und Datum
 
das funtkioniert nicht, so wie ich mir das vorgestellt habe... Ich will ja auch keine Zeitspanne berechnen...

mkinzler 2. Aug 2009 15:00

Re: Differenz zwischen Zeit und Datum
 
Was sonst?

TM4rkuS 2. Aug 2009 15:11

Re: Differenz zwischen Zeit und Datum
 
Ein Datum... gut, grundsätzlich könnte man es schon als Zeitspanne ansehen...
Wie kriege ich es hin, dass Delphi mir diese Zeitspanne in "dd.mm.yyyy hh.nn.ss" ausgibt? Ich hab hier im Forum glaub ich was von StrToDateTime gelesen, aber mein Turbo-Delphi sagt dazu nur "Nicht deklarierter Bezeichner"...

mkinzler 2. Aug 2009 15:12

Re: Differenz zwischen Zeit und Datum
 
Wie kann eine Differenz zwischen 2 Datumswerten eine Datum sein?

TM4rkuS 2. Aug 2009 15:18

Re: Differenz zwischen Zeit und Datum
 
... hast du dir meinen ersten Post nicht durchgelesen ;-)? Ich habe gesagt "sozusagen"... Eigentlich habe ich nur 01:10:00. Und die will ich von einem Datum abziehen um damit ein anderes Datum zu erhalten.

Ich kann es gerne nochmal erklären.

Ich habe ein Datum mit Zeit, nämlich in diesem Beispiel den 01.01.2009 01:00:00. Jetzt will ich, dass von diesem Datum die Zeit 01:10:00 abgezogen wird, sodass ich ein neues Datum 31.12.2008 erhalte. Ist meine Frage wirklich so schwer zu verstehen?

DeddyH 2. Aug 2009 15:35

Re: Differenz zwischen Zeit und Datum
 
Gegenfrage: ist die Antwort aus #2 so schwer zu verstehen?

TM4rkuS 2. Aug 2009 15:40

Re: Differenz zwischen Zeit und Datum
 
ja für leute die noch nie mit sowas gearbeitet haben und deren Hilfe aus irgendeinem unerfindlichen Grund nicht funktioniert schon

DeddyH 2. Aug 2009 15:47

Re: Differenz zwischen Zeit und Datum
 
Du willst von einem Datum eine gewisse Zeitspanne subtrahieren. Also musst Du doch nur errechnen, wieviele Tage das sind und vom Ursprungsdatum abziehen. Ein Stunde und 10 Minuten sind demnach 1/24 + 1/24/60 * 10.

jaenicke 2. Aug 2009 16:03

Re: Differenz zwischen Zeit und Datum
 
Zitat:

Zitat von TM4rkuS
und deren Hilfe aus irgendeinem unerfindlichen Grund nicht funktioniert schon

Dann würde ich mich darum einmal kümmern. Kann es sein, dass du noch eine uralte Delphiversion wie Delphi 7 benutzt und dazu Vista? Dann musst du das entsprechende Update für Vista installieren wie hier beschrieben.

Zudem gibt es auch eine Onlinehilfe...
http://docs.codegear.com/products/ra...DateUtils.html

sx2008 2. Aug 2009 16:28

Re: Differenz zwischen Zeit und Datum
 
Es gibt zwei (seltsamerweise kaum bekannte) Funktionen: Int() und Frac().

Int() liefert den ganzzahligen Anteil vor dem Komma und ist damit eng verwandt mit Trunc().
Der Unterschied zwischen Int() und Trunc() ist der Rückgabewert:
Int() liefert Extended, während Trunc() ein Int64 zurück gibt.

Frac() liefert den Nachkommaanteil.

Jetzt muss man noch wissen, dass ein Tag = 24 Stunden dem Wert 1.0 im TDateTime-System entsprechen.

Delphi-Quellcode:
var
  a, b, c : TDateTime;
begin
  a := Now; // Aktuelles Datum + Uhrzeit
  b := Int(a); // nur das Datum ohne Uhrzeit bzw. Uhrzeit 0:00:00
  c := Frac(a); // nur die Uhrzeit

TM4rkuS 2. Aug 2009 19:04

Re: Differenz zwischen Zeit und Datum
 
sx2008, das ist exakt das, was ich gesucht habe =) Danke... Gibt's hier irgendwo einen Danke-Knopf?^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 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