How to parse a date string + time offset to boost :: posix_time :: ptime?

I have the line "2011-10-20T09: 30: 10-05: 00"

Does anyone know how I can parse it using boost :: date_time library?

+6
source share
2 answers

ok, I found the answer

code (for VS)

it converts the string to local_date_time, but for me this is acceptable:

#pragma warning(push) #pragma warning(disable:4244) #pragma warning(disable:4245) #include <boost/date_time/local_time/local_time.hpp> #pragma warning(pop) #include <iostream> #include <string> int main() { using namespace std; using namespace boost::local_time; istringstream ss("2011-10-20T09:30:10-05:00"); ss.exceptions(ios_base::failbit); local_time_input_facet* facet = new local_time_input_facet("%Y-%m-%dT%H:%M:%S%ZP"); ss.imbue(locale(ss.getloc(), facet)); local_date_time ldt(not_a_date_time); ss >> ldt; // do the parse std::cout << ldt.to_string() << "\noffset is: " << to_simple_string(ldt.zone()->base_utc_offset()) << std::endl; } 

maybe someone will need it

+7
source
 const char *s = "2011-10-20T09:30:10-05:00"; boost::posix_time::ptime t_local( boost::gregorian::from_string(std::string(s, s + 10)), boost::posix_time::duration_from_string(std::string(s + 11, s + 19)) ); boost::posix_time::ptime t( t_local - boost::posix_time::duration_from_string(std::string(s + 19, s + 25)) ); 

Now t is UTC, and t_local is local time.

+2
source

Source: https://habr.com/ru/post/903473/


All Articles