Datum von der RTC in einen String packen

OP #4153451
Lesenswert?
• ▲
▼
Hi,

ich hätte eine Frage zu Strings.
Es ist so, dass ich einen String brauche, der so aussieht "04.06.2015".
Das Datum erhalte ich von der RTC. Jedoch weiß ich nicht, wie ich ein 
Datum in einen String mit Punkten wandeln kann, und zwar so, dass es 
nicht allzu aufwendig ist.

Hat jemand einen Vorschlag? Das Datum von der RTC ist vom Datentyp 
uint8_t.

Ich kann ja itoa verwenden, was dann einen anderen string erstellt und 
die 3 strings in einen mit pointern kombinieren. Geht es aber einfacher?

Ich verwende einen Atmega2560

Danke
Gast #4153463
Lesenswert?
• ▲
▼
Eugen Thorben schrieb:
> Es ist so, dass ich einen String brauche, der so aussieht "04.06.2015".

Das ist schon ein komisches Datenformat.

Auch wenn es nichts am Wandlungsprinzip ändert, warum nicht das 
standardisierte ISO-Format jjjj-mm-tt (ISO 8601). Die Uhrzeit gibt doch 
auch keiner als Minuten:Stunden an.
#4153699
Lesenswert?
• ▲
▼
Eugen Thorben schrieb:
> Ich mach einen Pfad in der SD-Karte auf. Da soll dann der Ordner so
> heißen.

Gerade dann solltest du nach ISO 8601 formatieren! Dann ist der Name 
nämlich nicht nur international verständlich, sondern vor allem auch mit 
simpler textuellen Sortierfolge sinnvoll sortierbar.
Bei deinem Format ist die Reihenfolge der Ordner im Dateibrowser fürn 
Popo.
OP #4153717
Lesenswert?
• ▲
▼
Ja, hast Recht. Dann mache ich es nach der ISO.

Ich kenn mich mit sprintf nicht so gut aus. Wäre es dann einfach so, 
wenn ich statt den Punkten Bindestriche möchte?
1
sprintf( buffer, "%04u-%02u-%02u", year, (int)month, (int)day);


Ich würde im Datumsordner noch dann eine csv Datei mit der Zeit anlegen.

Wäre es dann
1
sprintf( buffer, "%02u-%02u.csv", minute, second );

?

Würde gern dann z. B. eine csv Datei mit dem Namen 17-04 haben.


Danke für eure Vorschläge :D
#4153934
Lesenswert?
• ▲
▼
Joachim B. schrieb:
> weil ich das auch so bei meinen Dateinamen für Bilder habe und
> Leerzeichen nicht jedes Dateisystem mag oder Sonderbehandlung ""
> benötigt.

Deshalb und für die Eindeutigkeit steht vor der Zeit ein großes T. Dann 
ist kein Leerzeichen drin.

Joachim B. schrieb:
> Im Datum / ist ja nicht unüblich finde ich.

Aber leider in zig miteinander inkompatiblen Varianten und viel 
Potenzial für Uneindeutigkeiten. Deshalb sind / und . als Trennzeichen 
hier ungeeignet. / geht übrigens auch nicht im Dateinamen. : in der 
Zeitangabe auch nicht, daher empfiehlt sich bei Dateinamen eigentlich 
die Kurzfassung ohne Trennzeichen: 20150604T2018.
#4154110
Lesenswert?
• ▲
▼
Malte S. schrieb:
> daher empfiehlt sich bei Dateinamen eigentlich
> die Kurzfassung ohne Trennzeichen: 20150604T2018.

das mit / und . oder : stimmt, deswegen im Dateinamen
2008_10_18__16_54_24.jpg

aber im µC Bereich finde ich (auch für LCD Ausgabe oder seriell)

Joachim B. schrieb:
> compile 2015/06/04_13:21:11
> clock   2015/06/04_13:21:51
> compile < RTC

lesbarer und beides kann man gut vergleichen oder sortieren.
#4154120
Lesenswert?
• ▲
▼
Joachim B. schrieb:
> das mit / und . oder : stimmt, deswegen im Dateinamen
> 2008_10_18__16_54_24.jpg

Weil was genau gegen 20081018T165424.jpg spricht?

Joachim B. schrieb:
> lesbarer und beides kann man gut vergleichen oder sortieren.

Lesbar mag sein. Zur Anzeige wird daher ja auch 2008-10-18 statt 
20081018 empfohlen.

Ich wollte ja auch nur darauf hinweisen, dass es Standards gibt, damit 
nicht jeder seinen eigenen Standard erfinden muss ;-)

Clerical schrieb:
> Beim Alten Testament biste aber mit ISO 8601 aufgeschmissen!

Die Jahreszahl kann bei ISO 8601 auch negativ sein.
(Firma: Vescomp) #4155932
Lesenswert?
• ▲
▼
Thomas Eckmann schrieb:
> Marc Vesely schrieb:
>> 150604T2052 reicht vollkommen
>
> Für die Bibel und eingescannte Fotos aus dem 1. Weltkrieg aber nicht.
> Und die Information der letzten Dateiänderung bekomme ich ohne den
> Dateinamen.
>
> mfg.

 Aha.
 Wenn du mir noch sagst, welche Dateinamen aus der Bibel zweideutig fur
 dich sind...
 Und welches RTC im 1. Weltkrieg verwendet wurde...

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