Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datumswerte vor dem 30.12.1899 (https://www.delphipraxis.net/126952-datumswerte-vor-dem-30-12-1899-a.html)

p80286 5. Jan 2009 15:41


Datumswerte vor dem 30.12.1899
 
Hallo zusammen,

ist Delphi für Datumswerte die vor dem 30.12.1899 liegen eigentlich vollkommen blind?
oder sind die entsprechenden TDateTime-Werte dann negativ?

viele Grüße
K-H

DeddyH 5. Jan 2009 15:44

Re: Datumswerte vor dem 30.12.1899
 
Wie wäre es mit Ausprobieren?
Delphi-Quellcode:
ShowMessage(DateToStr(-365));

nahpets 5. Jan 2009 15:47

Re: Datumswerte vor dem 30.12.1899
 
Hallo,

-1 ist der 29.12.1899, -693593 der 1.1.0001, früher scheint nicht zu gehen.

s.h.a.r.k 5. Jan 2009 15:51

Re: Datumswerte vor dem 30.12.1899
 
was will ich denn bitte auch früher?!

notfalls musst du halt selbst etwas einführen!? einen eigenen datentyp (bsp.: record) mit eigenen funktionen eben. ich weiß eben nur nicht was du vor hast, aber ein problem sollte das nicht sein :mrgreen:

mschnell 5. Jan 2009 15:52

Re: Datumswerte vor dem 30.12.1899
 
Zitat:

Zitat von nahpets
-1 ist der 29.12.1899, -693593 der 1.1.0001, früher scheint nicht zu gehen.

Habe ich vor Jahren 'mal für eine alte Jedi-Version) gebastelt. Das Jahr 0 gibt es nicht. der Tag vor dem 1.1.0001, ist der 31.12.-0001 (wenn man die Jahre "vor Christus" mit Minus kennzeichnen will.

-Michael

mkinzler 5. Jan 2009 15:53

Re: Datumswerte vor dem 30.12.1899
 
Oder einen (negativen) Offset

WInfo 5. Jan 2009 16:07

Re: Datumswerte vor dem 30.12.1899
 
Moin Moin,

es gibt ja auch noch andere Methoden das Datum auszudrücken, z. B. JulianDate ist ebenfalls in der Unit DateUtils deklariert.

p80286 5. Jan 2009 16:24

Re: Datumswerte vor dem 30.12.1899
 
Wow
vielen Dank für die vielen Antworten,
Mein Problem liegt in einer Db in der einige Datumswerte vor 1899 liegen.
In einem Abfrage-Prototypen habe ich einfach mal .asdatetime genutzt und dabei wurde null mit dem 30.12.1899 übersetzt. Was nicht ganz meiner Intention entsprach.
Jetzt weiß (vermute) ich, daß man die Klippe auf die ich gestoßen bin, umschiffen kann.

Die Idee mit dem JulianDate gefällt mir, mal sehen was sich daraus machen läßt.

vielen Dank euch allen.

Gruß
K-H

P.S.
@s.h.a.r.k.
bis 2000 hat sich das bei WinzigWeich auch jeder gefragt.
Nicht oft aber es kommt vor daß man ein Datum aus dem vorletzten Jahrhundert (oder noch früher) braucht.
nichts für ungut ist nicht bös gemeint
K_H

Sunlight7 5. Jan 2009 16:53

Re: Datumswerte vor dem 30.12.1899
 
Zitat:

Zitat von p80286
ist Delphi für Datumswerte die vor dem 30.12.1899 liegen eigentlich vollkommen blind?

Zitat:

Zitat von Delphi Hilfe
Hinweis: Delphi 1.0 berechnete das Datum ausgehend von Jahr 1 statt von 1899. Um ein Datum aus dem Delphi 1.0-Format in das Delphi 2.0-Format umzuwandeln, ziehen Sie 693594.0 vom Delphi 1.0-Datum ab. Das Datumsformat wurde geändert, um kompatibel mit der OLE 2.0-Automatisierung zu sein.


mkinzler 5. Jan 2009 16:55

Re: Datumswerte vor dem 30.12.1899
 
Delphi verwendet das Windows Datumsformat ( Tage seit dem 31.12.1899)

jbg 5. Jan 2009 17:00

Re: Datumswerte vor dem 30.12.1899
 
Zitat:

Zitat von p80286
habe ich einfach mal .asdatetime genutzt und dabei wurde null mit dem 30.12.1899 übersetzt.

Das liegt daran, dass AsDateTime versucht irgendwas auf NULL herauszuholen. Und bei Zahlen ist das eben immer die 0, was dann dem 30.12.1899 entspricht. Daher sollte man immer vorher auf IsNull prüfen.

mjustin 5. Jan 2009 17:45

Re: Datumswerte vor dem 30.12.1899
 
Zitat:

Zitat von p80286
Hallo zusammen,

ist Delphi für Datumswerte die vor dem 30.12.1899 liegen eigentlich vollkommen blind?
oder sind die entsprechenden TDateTime-Werte dann negativ?

Zusatzfrage :-D

In einigen römisch-katholischen Ländern folgte auf Donnerstag, den 4. Oktober gleich Freitag, der 15. Oktober 1582.
Berücksichtigt Delphi das auch, z.B. durch einen entsprechenden Sprung in den FormatDateTime oder DateToStr Funktionen? Müsste ich mal nachschauen ...

http://de.wikipedia.org/wiki/Gregorianischer_Kalender

Sunlight7 5. Jan 2009 18:36

Re: Datumswerte vor dem 30.12.1899
 
Versuchs einfach :zwinker:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
   var Date:TDateTime;
       i:Integer;
begin
   Date:=EncodeDate(1582, 10, 3);

   For i:=0 to 14 do
      Memo1.Lines.Add(DateToStr(Date+i));
end;


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