ISO8601-Zeit als std::string mit C++11 chrono

English Deutsch

Du möchtest die chrono-Bibliothek des C++11-Standards verwenden, um einen ISO8601-formatierten Zeitstempel als std::string zu generieren, z.B. 2018-03-30T16:51:00Z

Lösung

Du kannst diese Funktion verwenden, die std::put_time mit einem std::ostringstream verwendet, um den resultierenden std::string zu generieren.

#include

iso8601_time.cpp
#include <iostream>
#include <chrono>
#include <iomanip>
#include <sstream>

/**
 * Einen UTC-ISO8601-formatierten Zeitstempel generieren
 * und als std::string zurückgeben
 */
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();
}

// Verwendungsbeispiel
int main() {
    std::cout << currentISO8601TimeUTC() << std::endl;
}

Check out similar posts by category: C/C++