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; }