AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Positive Tageszählung mit Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

Positive Tageszählung mit Delphi

Ein Thema von Wolfgang Mix · begonnen am 31. Okt 2009
Antwort Antwort
Benutzerbild von Wolfgang Mix
Wolfgang Mix
Registriert seit: 13. Mai 2009
Fast jede Kalendersoftware, die mit Kalenderfunktionen rechnet, bedient sich daurch,
daß sie Tage ab einem bestimmten Datum aufsteigend durchnumeriert.
Die meisten Kalender bedienen sich am Julianischen Tag und dem Julianischen Datum
nach der Definition von Scaliger. Er definiert den Tag 0 im Julianischen Kalender
mit dem Datum 1.1.4713 12 Uhr mittags v. Chr.
Andere Kalender benötigen diesen großen Zeitraum nicht und begnügen sich mit dem Gregorianischen
Kalenderbereich ab 15.10.1582 aufwärts oder in noch kleineren Zeiträumen wie z.B. der
Windows-Kalender, der sehr bescheidenen Ansprüchen genügt.
Ich hatte hier schon einmal gezeigt, wie man einfacher mit dem Gregorianischen Tag
und dem Gregorianischen Datum rechnen kann (Gregor(1) = 15.10.1582 usw...).

Die Kalenderfunktionen bei Delphi haben dagegen eine eigenwillige Zählweise,
die nachstehender Tabelle zu entnehmen ist. Der "Urknall" beginnt bei dem Datum
01.01.0001 mit julianischer Numerierung und wechselt ab 15.10.1582 zur gregorianischen, indem
korrekterweise einfach 10 Tage übersprungen werden. Der Tag 1 findet am 31.12.1899
statt, warum auch immer (Delphi 2005, andere Versionen habe ich nicht getestet).

Da ich nicht nur in Delphi code, habe ich mir ein paar kleine Routinen geschrieben,
die nur mit postiven Tageszahlen arbeiten (DelphiDay und DelphiDayToDate),
die nur den ganzzahligen Anteil von TDateTime benutzen.

Vielleicht kann das ja jemand von Euch außer mir auch noch gebrauchen.


Datum___________Delphi-Tagesnr.____________Neue Tagesnr.
________________DelphiNumberOrg____________DelphiN umber

01.01.0001______-693593________________________________1

04.10.1582______-115869___________________________577725

15.10.1582______-115858___________________________577736

29.12.1899___________-1___________________________693593

30.12.1899____________0___________________________ 693594

31.12.1899____________1___________________________ 693595

01.01.2000_______365526___________________________ 730120

31.12.9999______2958465__________________________3 652059



Delphi-Quellcode:
//Wolfgang Mix - Delphi-PRAXiS
//Delphi day number
function DelphiDayOrg(d,m,yyyy:word):longint;
var tmp:TDateTime;
Begin
  Tmp:=Encodedate(yyyy,m,d);
  result:=round(tmp-StrTodate('30.12.1899'));
end;

//Wolfgang Mix - Delphi-PRAXiS
//Returns positive Delphi day number
function DelphiDay(d,m,yyyy:word):longint;
var tmp:TDateTime;
Begin
  Tmp:=Encodedate(yyyy,m,d);
  result:=1+round(tmp-StrTodate('01.01.0001'));
end;

//Wolfgang Mix - Delphi-PRAXiS
//Returns Delphi day number as date
function DelphiDayOrgToDate(n:longint):TDate;
Begin
   If (n>=-693593) and (n<=2958465)
   then result:=n
   else raise Exception.CreateFmt('Invalid day number',[result]);
end;

//Wolfgang Mix - Delphi-PRAXiS
//Returns new positive day number as date
function DelphiDayToDate(n:longint):TDate;
Begin
   If (n>=1) and (n<=3652059) then
   result:=n-693594
   else raise Exception.CreateFmt('Invalid day number',[result]);
end;
Gruß

Wolfgang
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
 
Antwort Antwort


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 13:41 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