AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TDateTime

Ein Thema von dR4g0N · begonnen am 5. Mai 2004 · letzter Beitrag vom 5. Mai 2004
Antwort Antwort
Seite 1 von 2  1 2      
dR4g0N
(Gast)

n/a Beiträge
 
#1

TDateTime

  Alt 5. Mai 2004, 21:04
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
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#2

Re: TDateTime

  Alt 5. Mai 2004, 21:08
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
  Mit Zitat antworten Zitat
dR4g0N
(Gast)

n/a Beiträge
 
#3

Re: TDateTime

  Alt 5. Mai 2004, 21:12
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 ...
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#4

Re: TDateTime

  Alt 5. Mai 2004, 21:18
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
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#5

Re: TDateTime

  Alt 5. Mai 2004, 21:28
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.
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
dR4g0N
(Gast)

n/a Beiträge
 
#6

Re: TDateTime

  Alt 5. Mai 2004, 21:30
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?
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#7

Re: TDateTime

  Alt 5. Mai 2004, 21:36
wozu gibts die OH :

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.
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#8

Re: TDateTime

  Alt 5. Mai 2004, 21:38
oder als Code:

Delphi-Quellcode:
uses ..., DateUtils;

...

procedure ...
var
  Differenz: integer;
  Startzeit,
  EndZeit: tDatetime;
begin
  Differenz := Daysbetween( Startzeit, Endzeit );
end;
EDIT: uses-Klausel vergessen ...
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
dR4g0N
(Gast)

n/a Beiträge
 
#9

Re: TDateTime

  Alt 5. Mai 2004, 21:40
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
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#10

Re: TDateTime

  Alt 5. Mai 2004, 21:41
Hi!

Warum ziehst du dann nicht einfach 1899 ab?


Ciao fkerber
Frederic Kerber
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 Uhr.
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