Hallo zusammen,
erst einmal ein großes Lob und ein Dankeschön an all die jenigen die, die uns Newbies an ihren Entwicklungen teilhaben lassen.
Gestern ist mir folgendes aufgefallen. Der Webserver hat als Datum folgendes ausgegeben
00.01.13 anstatt 31.12.12. Heute dem 01.01.13 läuft alles wieder wie es soll.
orginal
void ntp_get (unsigned char index)
{
NTP_DEBUG("** NTP DATA GET! **\r\n");
struct NTP_GET_Header *ntp;
ntp = (struct NTP_GET_Header *)ð_buffer[UDP_DATA_START];
ntp->rx_timestamp = HTONL(ntp->rx_timestamp);
ntp->rx_timestamp += GMT_TIME_CORRECTION; // UTC +1h
time = ntp->rx_timestamp;
uint16_t tage = (unsigned long)(time/86400); // Tage seit 1.1.1900
tage -= 39445; // 108 Jahre abziehen -> Tag 0 ist 31.12.2007
unsigned char yy = 8; // 2008 ist Offset
while (tage > 365)
{
tage -= 365;
if ( yy % 4 == 0)
{
tage--; // Schaltjahr
}
++yy;
}
TM_YY = yy;
Durch folgende Änderung sollte es in vier Jahren auch das richtige Datum anzeigen
unsigned char yy = 8; // 2008 ist Offset
while (((tage > 365) && (yy % 4 != 0)) || ((tage > 366) && (yy % 4 == 0)))
{
tage -= 365;
if ( yy % 4 == 0)
{
tage--; // Schaltjahr
}
++yy;
}
TM_YY = yy;
Ist bestimmt nicht die schönste Lösung, habt ein Nachsehen ich bin noch Neuling.
Gutes Neues
MfG
Manfred