mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik unix time ticks in Uhrzeit


Autor: Tseug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Foum,

ich habe das Problem dass ich die UNIX Timeticks in eine Uhrzeit und die 
Uhrzeit wieder in timeticks umrechnen möchte. Die Bib time.h is mir aber 
zu groß und aus Performancegründen möchte ich das ganze selbst 
programmieren.
Also quasi sollen die beiden Funktionen localtime() und mktime() 
nachgebildet werden. Hat da jemand ne Idee bzw. einfache Formel um auch 
Schaltjahre bzw. Schalttage zu berücksichtigen??

Schönen Gruß
Timo

Autor: Patrick Wieland (wieland)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Timo!
Ich weiss nicht, ob das Problem noch aktuell ist bei dir, aber ich stehe 
gerade vor der selben Frage. Aus dem entsprechenden Linux-Quelltext in 
und um time.h werde ich nicht schlau und, man mag es wirklich nicht 
glauben, ich kann im Internet nirgens eine Beschreibung des 
ensprechenden Algorithmus' finden, um aus Unix timestamps etwas in Form 
von "Samstag, 2007-10-20, 00:16:36" zu machen. Falls du in der 
Zwischenzeit etwas dazu gefunden haben solltest, fänd ich es echt nett, 
wenn du es hier posten könntest.
Gruß!
Wieland

Autor: Dummy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Unix timestamps

Eingeben bei:

www.gidf.de

Autor: Patrick Wieland (wieland)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mir jetzt die Implementierung des Zeit-und-Datum-Moduls von 
NutOS so zurechtgeschnitten, dass bloß noch zwei Dateien (time.h und 
time.c) übrig sind und das Modul lediglich noch die Funktionen 
"gmtime_r" und "localtime_r" sowie die Typen "tm" und "time_h" 
exportiert. Das funktioniert auch, allerdings bin ich mit dieser Lösung 
nicht ganz glücklich:

1) NutOS steht nicht unter der GPL, sondern hat so eine komische eigene 
Lizenz.
2) Die Implementierung ist nicht gerade vorteilhaft für die Verwendung 
auf einem 8-Bit-Microcontroller.
3) Den Quelltext, der die Steuerung der Umstellung zwischen MEZ/MESZ 
macht, habe ich nicht verstanden und so habe ich mir dort eine eigene 
Implementierung für die Funktion "_isindst" erstellt, die allerdings nur 
für die Zeitzone in der Deutschland liegt (UTC+1) und die europäische 
Normalzeit/Sommerzeit-Regelung ab 1996 funktioniert.

Hat jemand von euch schon die Zeit-Datums-Funktionen aus der glibc auf 
den AVR portiert und möchte mir seinen Code zur Verfügung stellen?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal optimiert für 8Bitter: Sekunde -> Uhrzeit + Datum


Beitrag "Berechnung Datum + Uhrzeit + Sommerzeit"


Peter

Autor: Patrick Wieland (wieland)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter,

Danke für deine Antwort. Den Beitrag "Sekunde -> Uhrzeit + Datum" hätte 
ich wohl über die Forensuche finden können. Entschuldige bitte, dass das 
nicht der Fall war! Dein Quelltext für den AVR-GCC ähnelt von der 
Struktur sehr dem, was ich mir gebaut habe, aber dein Code sieht doch so 
aus, als könnte der Compiler daraus etwas Schnelleres machen als bei 
mir. :-)

Gruß!
Wieland

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.