Forum: Compiler & IDEs Tagesunterschied zwischen zwei Daten berechnen


von sven (Gast)


Lesenswert?

Hallo

eeprom unsigned int STARTYEAR = 2011;
eeprom unsigned char STARTMONTH = 8;
eeprom unsigned char STARTDAY = 1;

eeprom unsigned int ENDYEAR = 2011;
eeprom unsigned char ENDMONTH = 9;
eeprom unsigned char ENDDAY = 3;

Die beiden obigen Daten können verschiedene Werte haben. Wie kann ich 
nun am Einfachsten die Differenz zwischen beiden Daten berechnen?

Ich steh irgendwie auf dem Schlauch bzw. würde in x if-if else 
-Schleifen enden.
Gibt es ne bessere Lösung?

von Karl H. (kbuchegg)


Lesenswert?

sven schrieb:

> eeprom unsigned int STARTYEAR = 2011;
> eeprom unsigned char STARTMONTH = 8;
> eeprom unsigned char STARTDAY = 1;
>
> eeprom unsigned int ENDYEAR = 2011;
> eeprom unsigned char ENDMONTH = 9;
> eeprom unsigned char ENDDAY = 3;
>
> Die beiden obigen Daten können verschiedene Werte haben. Wie kann ich
> nun am Einfachsten die Differenz zwischen beiden Daten berechnen?

Beide Daten als Anzahl der Tage seit einem Stichtag ausdrücken und dann 
ganz einfach die Differenz zwischen den beiden.

Wenn du gewährleisten kannst, dass du keine Daten vor 2011 hast, dann 
würde sich zb der 0. 1. 2011 als der Stichtag anbieten. Für jedes Jahr 
Differenz 365 Tage dazuzählen + jeweils einen Schalttag wenn notwendig.
Für die Monate machst du dir eine Tabelle mit den Tagen im Monat (beim 
Februar aufpassen). Und bei den Tagen brauchst du nichts machen.

Dann alle 3 Einzelergebnisse zusammenzählen und du hast die 
Tagesdifferenz zum Stichtag.

von Stefan (Gast)


Lesenswert?

Hallo Sven,

Wenn 7980 Jahre ab 4713 v. Chr. reicht Google mal Julianisches Datum.

Stefan

von Captain S. (captainsubtext)


Lesenswert?

Sieh dir mal mktime() und difftime() an.

von Walter (Gast)


Lesenswert?

sven schrieb:
> if-if else
> -Schleifen

was ist denn das?

von guenni (Gast)


Lesenswert?

"if"-Schleifen und "for"-Abfragen. "C"-typisch.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.