ISO8601 UTC time as std::string using C++11 chrono
You want to use the C++11 standard’s chrono
library to generate a ISO8601-formatted timestamp as a std::string
, e.g. 2018-03-30T16:51:00Z
Solution
You can use this function which uses std::put_time
with a std::ostringstream
to generate the resulting std::string
.
#include <iostream>
#include <chrono>
#include <iomanip>
#include <sstream>
/**
* Generate a UTC ISO8601-formatted timestamp
* and return as std::string
*/
std::string currentISO8601TimeUTC() {
auto now = std::chrono::system_clock::now();
auto itt = std::chrono::system_clock::to_time_t(now);
std::ostringstream ss;
ss << std::put_time(gmtime(&itt), "%FT%TZ");
return ss.str();
}
// Usage example
int main() {
std::cout << currentISO8601TimeUTC() << std::endl;
}