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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.