Buonasera usando la libreria ntporg non riesco a ricevere la data nella forma aaaa-mm-gg , con il codice println riesco a stamparla, ma se sotituisco al println un campo string mi va in errore. allego il codice.Grazie a tutti.
void printLocalTime(){
struct tm timeinfo;
if(!getLocalTime(&timeinfo)){
Serial.println("Failed to obtain time");
return;
}
Serial.println(&timeinfo, "%F, %T, %A, %B %d %Y %H:%M:%S");
Serial.print("Data nella forma aaaa-mm-gg: "); // paolo
Serial.println(&timeinfo, "%F");
Non ho idea di cosa hai provato, ma non puoi usare la stringa di formattazione del tempo con la classe String di Arduino.
Presumo tu stia usando un ESP32...
L'istruzione Serial.print(&timeinfo, "%F, %T, %A, %B %d %Y %H:%M:%S"); (e l'equivalente println) in realtà esegue questo codice:
size_t Print::print(struct tm *timeinfo, const char *format) {
const char *f = format;
if (!f) {
f = "%c";
}
char buf[64];
size_t written = strftime(buf, 64, f, timeinfo);
if (written == 0) {
return written;
}
return print(buf);
}
Devi approfondire l'utilizzo dell'istruzione C/C++ size_t strftime (char* ptr, size_t maxsize, const char* format, const struct tm* timeptr) ed imparare a gestire le C string (nota la s minuscola) ovvero gli array di char.
Guarda l'esempio presente ad esempio a questo link che fa riferimento all'istruzione strftime.
... fosse anche per una sola riga, come richiesto al punto 7 del REGOLAMENTO, il codice va racchiuso tra i tag CODE, per cui, cortesemente edita il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona <code/> nella barra degli strumenti per contrassegnarla come codice. Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmdT su un Mac, sempre all'interno del IDE).