Supposons que je reçois d'un serveur Web une chaîne à analyser. Cette chaîne contient une date au format YYYY-MM-DD
. Ce que je veux est de le convertir à l'horodatage qui représente le début de ce jour, donc je ne veux pas de secondes, minutes et heures. Comme exemple factice, j'essaie d'extraire l'horodatage du jour en cours, une fois converti au format YYYY-MM-DD
. Voici le code:Parse chaîne de date pour supprimer les heures, minutes et secondes de l'horodatage
#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;
}
La sortie est:
2017-10-19
cd: 1908337984324104
L'horodatage extrait est manifestement erronée. Où est le problème dans l'analyse de la chaîne 2017-10-19
en utilisant le format %F
?
Merci beaucoup! Je regardais la documentation d'une autre fonction de formation du temps, devinant que ce serait la même chose. J'avais tort. – nessuno