I have a web service that returns timestamps in ISO 8601 format, e.g.,"2021-06-25T12:00:00"I'm trying to turn the timestamp string into a tm type struct from the ESP8266 library<time.h>, to perform time calculations using thedifftime() function.
I've been referring to the Redhat time functionshttps://sourceware.org/newlib/libc.html#time, as it seem to be compatible with the ESP library, though all i can find are functions converting tm structs to timestamp strings. Are there any functions to convert a string timestamp into a tm struct and then back into epoch? Or what would be the best way to approach this kind of conversion on the ESP8266 platform?
- Does this answer your question?How to parse 20180810T143000Z to time_t2021-04-29 05:26:31 +00:00CommentedApr 29, 2021 at 5:26
- Thank you! This method works too, though i find the answer below to be more useful.Boyfinn– Boyfinn2021-04-29 06:53:16 +00:00CommentedApr 29, 2021 at 6:53
- sorry yes, there is a different format. strptime can't parse a timestamp without delimiters.2021-04-29 07:08:16 +00:00CommentedApr 29, 2021 at 7:08
1 Answer1
Trystrptime from thetime.h.
void setup(){ struct tm tm = {0}; char buf[100]; // Convert to tm struct strptime("2001-11-12 18:31:01", "%Y-%m-%d %H:%M:%S", &tm); // Can convert to any other format strftime(buf, sizeof(buf), "%d %b %Y %H:%M", &tm); Serial.printf("%s", buf);}void loop(){ yield();}- Thank you. The method above works. I just formatted my string as
"%Y-%m-%dT%H:%M:%S",instead.Boyfinn– Boyfinn2021-04-29 06:51:32 +00:00CommentedApr 29, 2021 at 6:51
Explore related questions
See similar questions with these tags.

