#include #include "zeit.h" uint8_t Monatstage[2][12] = { {31,28,31,30,31,30,31,31,30,31,30,31} , {31,29,31,30,31,30,31,31,30,31,30,31} }; uint8_t Schaltjahr( uint16_t Jahr ) { if ( Jahr % 4 == 0 ) { if ( Jahr < 1582 ) return 1; else { if ( !( Jahr % 100 == 0 ) ) return 1; else if ( Jahr % 400 == 0 ) return 1; }; }; return 0; } JDatum_t JulianischesDatum( int16_t Jahr, int8_t Monat, int8_t Tag, int8_t Stunde, int8_t Minute, int8_t Sekunde ) { double Stunden; int8_t A; uint16_t C; uint32_t B; JDatum_t JDatum; if ( Monat <= 2 ) { Jahr -= 1; Monat += 12; }; //Stunden = (double) Stunde / 24 + (double) Minute / 1440 + (double) Sekunde / 86400; Stunden = (double) Stunde / 24; (void) Minute; (void) Sekunde; // Minuten und Sekunden sind für Zeitgleichung unnötig, Cast gegen Compiler Meckern. A = 2 - Jahr / 100 + Jahr / 400; B = 365.25 * ( Jahr + 4716 ); C = 30.6001 * ( Monat + 1 ); //JDatum.JD0 = ( A + B + C + Tag - 1524.5 ); JDatum.JD = ( A + B + C + Tag + Stunden - 1524.5 ); //JDatum.JD0_J2000 = JDatum.JD0 - 2451545.0; JDatum.JD_J2000 = JDatum.JD - 2451545.0; //JDatum.T0_J2000 = JDatum.JD0_J2000 / 36525.0; JDatum.T_J2000 = JDatum.JD_J2000 / 36525.0; return JDatum; }