Angenommen, ich empfange von einem Webserver eine Zeichenfolge zu analysieren. Diese Zeichenfolge enthält ein Datum im Format YYYY-MM-DD
. Was ich will, ist, es in den Zeitstempel zu konvertieren, der den Beginn dieses Tages darstellt, daher möchte ich keine Sekunden, Minuten und Stunden.Parse Datum String zum Entfernen von Stunden, Minuten und Sekunden aus Timestamp
Als Dummy Beispiel, ich versuche, den Zeitstempel des aktuellen Tages zu extrahieren, einmal in das Format YYYY-MM-DD
umgewandelt. Hier ist der Code:
#include <chrono>
#include <iomanip>
#include <iostream>
#include <sstream>
int main()
{
// Current time at GMT
std::time_t now = std::time(0);
std::tm *now_tm = std::gmtime(&now);
std::ostringstream oss;
// Extract yyyy-mm-dd = %F
oss << std::put_time(now_tm, "%F");
// Use oss to get a date without seconds from
// current time at gmt
std::tm tm;
std::istringstream ss(oss.str());
ss >> std::get_time(&tm, "%F");
std::time_t current_date = std::mktime(&tm);
std::cout << oss.str() << std::endl;
std::cout << "cd: " << current_date << std::endl;
return 0;
}
Die Ausgabe lautet:
2017-10-19
cd: 1908337984324104
Die extrahierte Zeitstempel eindeutig falsch ist. Wo ist das Problem bei der Analyse der 2017-10-19
Zeichenfolge mit dem %F
Format?
Vielen Dank! Ich schaute mir die Dokumentation einer anderen zeitbildenden Funktion an und vermutete, dass es genauso sein würde. Ich habe mich geirrt. – nessuno