Forum: Compiler & IDEs Wochentag berechnet mit time - Frage dazu (avr-gcc)


von Andy M. (medix)


Lesenswert?

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?

von (prx) A. K. (prx)


Lesenswert?

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.

von Andy M. (medix)


Lesenswert?

Ähm, danke. Das war es natürlich.

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.