Forum: Mikrocontroller und Digitale Elektronik FreeRTOS tm structure verwirrende Dokumentation


von Johannes (Gast)


Lesenswert?

Einen schönen guten morgen.
Ich habe eine frage zu FreeRTOS.
https://www.freertos.org/API/FreeRTOS_POSIX_time.html
und zwar geht es um die Struktur tm (Zeit)

Sind das Kopierfehler?
tm_hour -> Minutes
tm_mday -> Seconds
tm_mon -> Seconds

Warum fangen alle bei 0 an außer Tag? Dieser fängt bei 1 an.
Warum gehen tm_sec von [0,60]?
Genauso tm_yday [0,365]

von Johannes (Gast)


Lesenswert?

Ahso,
meine Folgende Ausgabe ist momentan wie folg

timeSyncCb: unixtime: 1616314743
time: timings: day: 21    month: 2    year: 121    wday: 0    yday: 79

es passt alles (day fängt bei 1 an, month bei 0 und year muss noch 1900 
addiert werden)
Aber das ist alles ein bisschen verwirrend, da man die unterschiedlichen 
struct-members unterschiedlich auswerten muss.

Das ergebneis habe ich mit
1
localtime_r(&unixTime, &utcTime);
wobei unixTime 1616314743 ist.

von PittyJ (Gast)


Lesenswert?

Das wird ähnlich zu C und Unix sein, wo es seit Jahrzehntenn die struct 
tm gibt, die ähnlich aufgebaut ist.

https://www.cplusplus.com/reference/ctime/tm/

Davon sollte man schon mal gehört haben ...

von Johannes (Gast)


Lesenswert?

PittyJ schrieb:
> Das wird ähnlich zu C und Unix sein, wo es seit Jahrzehntenn die struct
> tm gibt, die ähnlich aufgebaut ist.
>
> https://www.cplusplus.com/reference/ctime/tm/

ok, das mit den Sekunden ist klar und macht sinn. die Schaltsekunde 
hatte ich nicht berücksichtigt.

Die Kommentare zu tm_hour, tm_mday, tm_mon setze ich jetzt mal als 
kopierfeheler an (obwohl das alles schon so alt ist, wurde es noch nie 
korrigiert? naja).

Aber warum tm_day bei 1 an und alle anderen bei 0?

von g457 (Gast)


Lesenswert?

> Aber warum tm_day bei 1 an und alle anderen bei 0?

..weil im realen Kalender die Tage bei 1 anfangen und die anderen Werte 
jeweils bei 0..??

von Johannes (Gast)


Lesenswert?

g457 schrieb:
> ..weil im realen Kalender die Tage bei 1 anfangen und die anderen Werte
> jeweils bei 0..??

Bei den Zeiten (sekunden, minuten, studen) gebe ich dir recht.
Aber bei mir fängt der Januar mit 1 an.

Es steht zwar dort month 'since' january, wodurch die 0 wieder sinn 
ergibt, aber warum dann nicht day 'since' first

von A. S. (Gast)


Lesenswert?

Johannes schrieb:
> aber warum dann nicht day 'since' first

anders herum: Wozu?

Der 5.Februar kann zwar als 5.2. ausgeschrieben werden, aber für die 5 
gibt es kein äquivalent, dass mit 4 irgendwie Sinn macht.

Die 1 für Februar ist i.d.R. der C-übliche zweite Eintrag in einer Liste 
von ausgeschriebenen oder abgekürzten Monatsnamen. Warum sollte man da 
mit einem leeren Element anfangen.

Beim Tag existiert keine solche Liste.

von Johannes (Gast)


Lesenswert?

A. S. schrieb:
> Die 1 für Februar ist i.d.R. der C-übliche zweite Eintrag in einer Liste
> von ausgeschriebenen oder abgekürzten Monatsnamen. Warum sollte man da
> mit einem leeren Element anfangen.
>
> Beim Tag existiert keine solche Liste.

Ja, auch das ist sinnig.
Da habe ich auch nicht dran gedacht.

Also wenn man an alles denkt, ergibt auch alles sinn.

Auf den ersten blick war es für mich dennoch ein bisschen verwirrend ;)

von Rolf M. (rmagnus)


Lesenswert?

A. S. schrieb:
> Johannes schrieb:
>> aber warum dann nicht day 'since' first
>
> anders herum: Wozu?

Weil im üblichen Gebrauch von Datum sowohl Tag, als auch Monat mit der 1 
anfangen. Da ist es etwas unintuitiv, hier zwar beim Tag, nicht aber 
beim Monat mit der 1 anzufangen.

A. S. schrieb:
> Die 1 für Februar ist i.d.R. der C-übliche zweite Eintrag in einer Liste
> von ausgeschriebenen oder abgekürzten Monatsnamen. Warum sollte man da
> mit einem leeren Element anfangen.

Man könnte ja auch einfach 1 abziehen. So wie es jetzt ist, muss man 
stattdessen 1 addieren, wenn man den Monat als Zahl ausgeben will.
Aber gut, das wurde halt mal so entschieden und ist jetzt eben so.

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.