И %T
, и %q
являются флагами формата вывода в режиме онлайн.
Чтобы продемонстрировать это, измените формат на "%a %b %d %H:%M:%S +0000 %Y"
, и ваша программа будет работать, как описано.
Какдля ввода часового пояса это немного сложнее, возможно, вам придется предварительно обработать строку, чтобы изменить +0000 на формат часового пояса posix сначала.
РЕДАКТИРОВАТЬ: например, вы могли бысделать это так:
#include <iostream>
#include <sstream>
#include <boost/date_time.hpp>
int main()
{
//std::string created_string = "Thu Mar 24 16:12:42 +0000 2011";
// write your own function to search and replace +0000 with GMT+00:00
std::string created_string = "Thu Mar 24 16:12:42 GMT+00:00 2011";
boost::local_time::local_date_time created_time(boost::local_time::not_a_date_time);
std::stringstream ss(created_string);
ss.exceptions(std::ios_base::failbit);
ss.imbue(std::locale(ss.getloc(),
new boost::local_time::local_time_input_facet("%a %b %d %H:%M:%S %ZP %Y")));
ss >> created_time;
std::cout << created_time << '\n';
}