title image


Smiley Lösung selbst gefunden
// Copyright: Ines Marks - 2005. All rights reserved



int DatumZuZahl(int Jahr, int Monat, int Tag)

{

int Monatsdistanz[12] = {0,31,59,90,120,151,181,212,243,273,304,334};

int Rueckgabe;



Rueckgabe = Jahr*365 + Monatsdistanz[Monat] + Tag;

if( Monat<2 ) Jahr = Jahr-1;

Rueckgabe = Rueckgabe + Jahr/4 - Jahr/100 + Jahr/400;



return(Rueckgabe);

}



void DatumAusZahl(int* Jahr, int* Monat, int* Tag, int Wert)

{

int Hilf;

Wert=Wert+1;

Hilf=Wert;



*Jahr=Hilf/366;

while(Wert>DatumZuZahl(*Jahr, 0, 0))

{

*Jahr=*Jahr+1;

}

*Jahr=*Jahr-1;

Hilf=Wert-DatumZuZahl(*Jahr, 0, 0);



*Monat=Hilf/31;

while(*MonatDatumZuZahl(*Jahr, *Monat, 0))

{

*Monat=*Monat+1;

}

*Monat=*Monat-1;

Hilf=Wert-DatumZuZahl(*Jahr, *Monat, 0);



*Tag=Hilf-1;

}



Ich berechne das Datum einfach grob und füge dann wenige Korrekturschritte hinzu. Man muss gar nicht so kompliziert rechnen. Immerhin schaffe ich über 3000 Jahre in weniger als einer Sekunde und schneller geht es wohl kaum.



Trotzdem danke an alle, die helfen wollten



Ines





geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: