Hallo Forum, für meine Heizungssteuerung basierend auf Radigs und Robues Software berechne ich den Wochentag, um z.B. an Wochenenden anders heizen zu können. (avr-gcc) Die Zeit hole ich per ntp. Da erhalte ich die Sekunden (time), die seit 01.01.1900 vergangen sind. Das war ein Montag. Nun an sich ja ganz einfach: unsigned int wtag; // Wochentag wtag = (time/86400)%7; da ich aber den Sonntag auf 0 haben will und nicht den Montag, müsste ich eigentlich rechnen: wtag = (time/86400+6)%7; Weder das 1. noch das 2. klappt. Es geht nur so: wtag = (time/86400+6*86400)%7; ABER WARUM????? Mir ist nicht klar, warum ich zu den vergangenen Tagen (time/86400) dann noch so eine riesige Zahl addieren muss, die ja nun eigentlich die Sekunden für 6 Tage darstellen. Komischerweise geht es. Hab ich die Variablentypen falsch gewählt?
Falschrum gedacht. Wenn bei time=0 ein Montag=1 rauskommen soll, dann wtag = (time/86400+1)%7; (6*86400)%7 ist zufällig 1, deshalb hat es gepasst.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.