From 50119c8e4ef2d5956b3ff919bbcd1efd6570caab Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Mon, 10 Dec 2012 13:09:56 +0400 Subject: [PATCH] Use boost::date_time for date time conversion --- backends/twitter/HTTPRequest.h | 2 +- backends/twitter/TwitterResponseParser.cpp | 21 ++++++++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/backends/twitter/HTTPRequest.h b/backends/twitter/HTTPRequest.h index d6b35ea3..cf8447f9 100644 --- a/backends/twitter/HTTPRequest.h +++ b/backends/twitter/HTTPRequest.h @@ -1,7 +1,7 @@ #ifndef HTTPREQ_H #define HTTPREQ_H -#include "libtwitcurl/curl/curl.h" +#include "curl/curl.h" #include "transport/logging.h" #include #include diff --git a/backends/twitter/TwitterResponseParser.cpp b/backends/twitter/TwitterResponseParser.cpp index 4324b310..8d87d509 100644 --- a/backends/twitter/TwitterResponseParser.cpp +++ b/backends/twitter/TwitterResponseParser.cpp @@ -1,6 +1,8 @@ #include "TwitterResponseParser.h" #include "transport/logging.h" #include +#include "boost/date_time/local_time/local_time.hpp" +#include "boost/date_time/time_facet.hpp" DEFINE_LOGGER(logger, "TwitterResponseParser") @@ -11,13 +13,18 @@ static std::string tolowercase(std::string inp) return out; } -static std::string toIsoTime(std::string in) { - time_t now = time(0); - struct tm *mtime = gmtime(&now); - strptime(in.c_str(), "%a %b %d %H:%M:%S %z %Y", mtime); - char buf[80]; - strftime(buf, sizeof(buf), "%Y%m%dT%H%M%S", mtime); - return buf; +static std::string toIsoTime(std::string &in) { + std::locale locale(std::locale::classic(), new boost::local_time::local_time_input_facet("%a %b %d %H:%M:%S +0000 %Y")); + boost::local_time::local_time_facet* output_facet = new boost::local_time::local_time_facet(); + boost::local_time::local_date_time ldt(boost::local_time::not_a_date_time); + std::stringstream ss(in); + ss.imbue(locale); + ss.imbue(std::locale(ss.getloc(), output_facet)); + output_facet->format("%Y%m%dT%H%M%S"); // boost::local_time::local_time_facet::iso_time_format_specifier ? + ss >> ldt; + ss.str(""); + ss << ldt; + return ss.str(); } EmbeddedStatus getEmbeddedStatus(const Swift::ParserElement::ref &element, const std::string xmlns)