Using C++11 functionality we can now use streams to parse times:
The iomanip std::get_time
will convert a string based on a set of format parameters and convert them into a struct tz
object.
You can then use std::mktime()
to convert this into an epoch value.
#include <iostream>
#include <sstream>
#include <locale>
#include <iomanip>
int main()
{
std::tm t = {};
std::istringstream ss("2010-11-04T23:23:01Z");
if (ss >> std::get_time(&t, "%Y-%m-%dT%H:%M:%S"))
{
std::cout << std::put_time(&t, "%c") << "\n"
<< std::mktime(&t) << "\n";
}
else
{
std::cout << "Parse failed\n";
}
return 0;
}