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
Denke ist gelöst. Ich addiere einfach den Wert drauf für ascii.
Eugen Thorben schrieb: > Es ist so, dass ich einen String brauche, der so aussieht "04.06.2015".
1 | sprintf( buffer, "%02u.%02u.%04u", (int)day, (int)month, year ); |
sprintf(buffer,"%02d.%02d.%04d",tag,monat,jahr); Selber programmieren spart jedoch Speicher, falls das von Nöten ist.
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.
Ich mach einen Pfad in der SD-Karte auf. Da soll dann der Ordner so heißen. Denke nehme aber lieber sprintf, danke für den tip
:
Bearbeitet durch User
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.
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
:
Bearbeitet durch User
Ja. Außer dass du mutmaßlich ..., hour, minute meintest und je nach Typ auch diese ggFs. explizit nach int umwandeln musst.
Eugen Thorben schrieb: > Danke für eure Vorschläge :D hier ist noch einer, ich mach das so, dann kann man auch mit strcmp vergleichen auf > und < compile 2015/06/04_13:21:11 clock 2015/06/04_13:21:51 compile < RTC
1 | RTC.getTime(); |
2 | sprintf(r_str, "%04d/%02d/%02d_%02d:%02d:%02d", RTC.year, RTC.month, RTC.day, RTC.hour, RTC.minute, RTC.second); |
3 | |
4 | Serial.println(r_str); |
:
Bearbeitet durch User
Genau. Aber warum / im Datum und _ als Trenner? - und Leerzeichen oder T ist Standard.
Malte S. schrieb: > Genau. Aber warum / im Datum und _ als Trenner? - und Leerzeichen oder T > ist Standard. weil ich das auch so bei meinen Dateinamen für Bilder habe und Leerzeichen nicht jedes Dateisystem mag oder Sonderbehandlung "" benötigt. Im Datum / ist ja nicht unüblich finde ich.
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.
Malte S. schrieb: > Zeitangabe auch nicht, daher empfiehlt sich bei Dateinamen eigentlich > die Kurzfassung ohne Trennzeichen: 20150604T2018. Und ohne Tausend und Hundert - glaube kaum, dass einer von uns ins nächste Jahrhundert rübergeht - 150604T2052 reicht vollkommen.
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.
Thomas Eckmann schrieb: > Und die Information der letzten Dateiänderung bekomme ich ohne den > Dateinamen. Nicht jeder möchte das Aus-Checken einer Datei aus einem Versionierungs-Tool als Dateiänderung betrachten.
Für die Bibel? Beim Alten Testament biste aber mit ISO 8601 aufgeschmissen!
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.
:
Bearbeitet durch User
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.
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...
Malte S. schrieb: > Ich wollte ja auch nur darauf hinweisen, dass es Standards gibt, damit > nicht jeder seinen eigenen Standard erfinden muss ;-) OK als ich 2003 damit anfing hatte ich halt nicht recherchiert, mein Fehler (meine Festplatte, meine Bilder)
:
Bearbeitet durch User
Joachim B. schrieb: > OK als ich 2003 damit anfing hatte ich halt nicht recherchiert, mein > Fehler (meine Festplatte, meine Bilder) Was nützen die schönsten Standards, wenn jeder seinen eigenen hat. Joachim B. schrieb: > ... deswegen im Dateinamen 2008_10_18__16_54_24.jpg
Wolfgang A. schrieb: > Was nützen die schönsten Standards, wenn jeder seinen eigenen hat. was hilft mir ein Standard von dem ich nichts wußte und den ich für mich nicht brauche? Mal ehrlich googelt ihr den Standard für Socken und Hemden in Schrank packen oder packt ihr einfach wie ihr mögt oder es euch gefällt?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.