C Bibliothek "time.c"

Gast #5156841
Lesenswert?

Hallo,

ich benutze einen STM32 inc. RTC.
Zur Zeitberechnung verwende ich die C Standard Bibliothek "time.c".

Wie definiere ich für diese Bibliothek meine Zeitzone ?

Meine Funktion

int gettimeofday(struct timeval *tv, struct timezone *tz)
{
    uint32_t tick = HAL_GetTick();      /* uptime in ms */

    tv->tv_sec = tick / 1000;
    tv->tv_usec = (tick % 1000) * 1000;

    return 0;
}

bekommt für den Pointer *tz ein NULL
Gast #5156863
Lesenswert?

Nop schrieb:
> Da ist eine Zeitzone doch ohnehin unsinnig, weil diese Funktion die Zeit
> seit power-up zurückgibt, und die hat außerdem nach 24 Tagen einen
> Überlauf.

Stimmt auch wieder.

Ich bekomme nach Programm Start die aktuelle UTC Zeit.
Diese möchte ich in der Bibliothek setzen und anschließend bei Bedarf 
mit

time_t t;
struct tm * ts;

t = time(NULL);
ts = localtime(&t);

das aktuelle Datum auslesen.

---

Nun stellt sich mir die Frage
- Wie setze ich die aktuelle UTC Zeit nach Programm Start in der 
Bibliothek
- Wie setze ich die Zeitzone ?
Gast #5156869
Lesenswert?

Ich denk du benutzt die RTC? Warum setzt du nicht in der RTC das 
Datum+Uhrzeit in der gewünschten Zeitzone, und fragst es direkt (ohne 
irgendwelche Bibliotheksfunktionen) ab? So bekommst du automatisch die 
lokale Zeit und musst nix rechnen.
Die RTC musst du nur ein einziges mal setzen (ich denke mal die hat eine 
Backup-Batterie), mit UTC musst du dann auch nicht rumfummeln.
Gast #5156880
Lesenswert?

Ich habe einen externen RTC Chip aus dem nach Programmstart die UTC Zeit 
ausgelesen wird. Das funktioniert auch. Allerdings möchte ich nun 
verschiedene Berechnungen mit der aktuellen Zeit und anderen Zeiten 
machen. Die Bibliothek habe ich noch nie benutzt, würde mir aber helfen.

Ich finde überall Informationen wie man sie benutzt aber nicht wie ich 
sie initialisiere.
Gast #5156889
Lesenswert?

Kai schrieb:
> Ich habe einen externen RTC Chip aus dem nach Programmstart die
> UTC Zeit
> ausgelesen wird.
Warum benutzt du nicht die interne? Ist doch viel einfacher.

Kai schrieb:
> Ich finde überall Informationen wie man sie benutzt aber nicht wie ich
> sie initialisiere.
Weil die Initialisierung vom Betriebssystem vorgenommen wird. Da du 
vermutlich keines hast, musst du nachschauen, wie deine 
Standard-Bibliothek das macht, denn das ist nicht vom C-Standard 
definiert. Da du auch nicht gesagt hast welche du nutzt, kann dir dabei 
keiner helfen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren