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
iso8601_time.cpp
#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;
}Check out similar posts by category:
C/C++
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow