ich habe hier eine Funktion, die mir das Datum ausgibt (dabei wird die Originalzeit, welche von OpenWheaterMap kommt, zuerst in das eigentliche Datum konvertiert):
void printTime(long timestamp) {
struct tm timeinfo;
time_t tstamp = (time_t)timestamp; // Cast timestamp to time_t
gmtime_r(&tstamp, &timeinfo);
timeinfo.tm_isdst = 0; // Set daylight saving time to zero
timestamp = mktime(&timeinfo); // Convert back to timestamp
char time_str[20];
char date_str[20];
char month_str[6];
char day_str[6];
strftime(time_str, sizeof(time_str), "%H:%M:%S", &timeinfo);
strftime(month_str, sizeof(time_str), "%m", &timeinfo);
strftime(day_str, sizeof(time_str), "%d", &timeinfo);
strftime(date_str, sizeof(time_str), "%Y-%m-%d", &timeinfo);
Serial.println(time_str);
Serial.println(month_str);
Serial.println(day_str);
}
Jetzt will ich aber gerne mit dem Datum einige Berechnungen anstellen (z.B. if-statements wie: falls Monat gröĂer als 2 und Tag kleiner als 10, ist tue dies und jenes). Ich habe schon verschiedene Sachen ausprobiert, um den string in ein int zu konvertieren, aber bislang hat nichts funktioniert ..
Im englischen Teil des Forum mĂŒssen die BeitrĂ€ge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
Helfen muss man eigentlich nicht, denn die Lösung versteckt sich schon in dem Code, den Du zeigst.
timeinfo.tm_isdst = 0; // Set daylight saving time to zero
Da greifst Du auf das Element tm_isdt der Struktur tm zu.
Und oh Wunder - darin gibt es noch mehr davon, die von Tagen. Monaten und Jahren sowie Stunden, Minuten und Sekunden handeln - die sind alle int und damit lÀsst sich prima rechnen.