Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TDateTime (https://www.delphipraxis.net/21635-tdatetime.html)

dR4g0N 5. Mai 2004 21:04


TDateTime
 
Also folgendes Problem:

Ich möchte 2 Daten subtrahieren. Jedoch kommt immer eine falsche Jahreszahl raus (Jahreszahl + 1900).

Es handelt sich um ein Konsolenprogramm.

Delphi-Quellcode:
program date1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  date1, date2, date3 : String;
  mdate1, mdate2, mdate3 : TDateTime;

begin

WriteLn('Bitte geben Sie das 1. Datum ein: [dd.mm.yyyy]');
ReadLn(date1);
WriteLn('Bitte geben Sie das 2. Datum ein: [dd.mm.yyyy]');
ReadLn(date2);
mdate1 := StrToDate(date1);
mdate2 := StrToDate(date2);
mdate3 := mdate1 - mdate2;
date3 := DateToStr(mdate3);
WriteLn('Die Differenz betraegt: ', date3);
ReadLn

end.
Wo ist mein Fehler? o_O

Stanlay Hanks 5. Mai 2004 21:08

Re: TDateTime
 
Hi. Ist das erste Datum größer oder kleiner als das erste? ;) Ich könnte mir vorstellen, dass bei 16.05.1903 - 01.12.2054 irgendwas falsches rauskommt.

Man liest sich, Stanlay :hi:

dR4g0N 5. Mai 2004 21:12

Re: TDateTime
 
Ohh ganz vergessen. Ich gehe davon aus der Anwender automatisch das erste Datum als größeres nimmt.

z.B.

10.05.2004
08.02.2002

oder so ...

Stanlay Hanks 5. Mai 2004 21:18

Re: TDateTime
 
Jetzt fällt mir grade ein: Was soll denn dabei rauskommen? Die Anzahl der Tag zwischen den zwei Daten? Dann schau dir mal in der OH "DaysBetween" an, das könnte dir weiterhelfen :)

Man liest sich, Stanlay :hi:

xineohp 5. Mai 2004 21:28

Re: TDateTime
 
moin,

wenn du als Ergebnis ein Datumsformat haben möchtest kannst du auch die Konstante "DateDelta" von der Differenz subtrahieren. Aber ich würde an deiner Stelle lieber die "...Between" Funktionen verwenden.

dR4g0N 5. Mai 2004 21:30

Re: TDateTime
 
kann man in einem konsolenprogramm eine funktion aufrufen? weil da zeigt er mir immer nen error ^^

//EDIT:

hat denn jmd einen bsp code für die daysbetween function?

xineohp 5. Mai 2004 21:36

Re: TDateTime
 
wozu gibts die OH :roll: :

Zitat:

Die Funktion gibt die Anzahl ganzer Tage zwischen den beiden angegebenen TDateTime-Werten zurück.

Unit

DateUtils

Kategorie

Datum/Zeit

Delphi-Syntax:

function DaysBetween(const ANow, AThen: TDateTime): Integer;

C++ Syntax:

extern PACKAGE int __fastcall DaysBetween(const System::TDateTime ANow, const System::TDateTime AThen);

Beschreibung

Mit DaysBetween können Sie die Differenz zwischen zwei TDateTime-Werten in Tagen ermitteln.

DaysBetween zählt nur ganze Tage. Die Differenz zwischen dem 31.12.1999, 23:59 Uhr und dem 01.01.2000, 23:58 Uhr wird von der Funktion DaysBetween also als Null berechnet, da die Differenz um eine Minute kürzer als ein ganzer Tag ist.

xineohp 5. Mai 2004 21:38

Re: TDateTime
 
oder als Code:

Delphi-Quellcode:
uses ..., DateUtils;

...

procedure ...
var
  Differenz: integer;
  Startzeit,
  EndZeit: tDatetime;
begin
  Differenz := Daysbetween( Startzeit, Endzeit );
end;
EDIT: uses-Klausel vergessen ...

dR4g0N 5. Mai 2004 21:40

Re: TDateTime
 
jo thx erstmal bin gerade dahintergestiegen warum der oben genannte code nicht funktioniert.
hab gehört die windows zeitrechnung fängt erst 1899 an. Somit kann er nicht das ja 3 ausgeben sondern zählt die 3 + 1899 und kommt so auf 1902. ^^

naja egal ...teste dann einfach weiter

fkerber 5. Mai 2004 21:41

Re: TDateTime
 
Hi!

Warum ziehst du dann nicht einfach 1899 ab?


Ciao fkerber


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:27 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz