Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
|
25. Jan 2003, 19:11
Mir war grad langweilig, und ich wusste nix zu machen (was für eine Verkettung unglücklicher Zwischenfälle ), also hab ich mal einen Sekunden-Seit-1970-In-Datum-Umrechner gemacht:
Delphi-Quellcode:
var
input, z, x, a, b, c, d, e, Tag, Monat, Jahr: LongWord;
{Input sind die Sekunden seit 1970, der Rest Hilfsvariablen bzw. das Ergebnis}
begin
{Den Quelltext, den ich angepasst habe, war in Turbo Pascal
geschrieben (hab ich nie gemacht) aber anscheinend gabs da noch
kein div oder so was. Im Original waren sogar noch alle Werte
Extended und die Befahle INT(X) was einen Extendend zurückgibt.
Da kann man also noch was verbessern.}
{Das Programm scheint zu klappen, nur wenn man die Zahlen zu groß wählt
(so um das Jahr 2106), dann wird es falsch. Auch negative Zahlen sind
nicht zu empfehlen}
input := strtoint64(edit1.Text);
z := Trunc(input / (60 * 60 * 24) + 0.5 + 2440587.5);
x := Trunc((z - 1867216.25) / 36524.25);
a := z + x + 1 - Trunc(x / 4);
b := a + 1524;
c := Trunc((b - 122.1) / 365.25);
d := Trunc(365.25 * c);
e := Trunc((b - d) / 30.6001);
Tag := b - d - Trunc(30.6001 * e);
if e < 14 then
Monat := e - 1
else
Monat := e - 13;
if monat > 2 then
Jahr := c - 4716
else
Jahr := c - 4715;
Edit2.Text := inttostr(Tag) + '. ' + inttostr(Monat) + '. ' + inttostr(Jahr);
end;
|
|
Zitat
|