3

I simple want to parse a time-string to a chrono::system_clock::time_point using:

#include <iosfwd> #include "date/date.h" std::stringstream ssTime; ssTime << "17:34:05"; std::chrono::system_clock::time_point tp_time; ssTime >> date::parse("%H:%M:%S", tp_time); 

I expected to get the time_point of the specified time after EPOCH, but instead I get 0 (i.e. EPOCH).

Note, that I'm using the date library of Howard Hinnant .

0

1 Answer 1

4

The design of the parse function is that if you don't parse enough information for the type being parsed, the failbit is set on the stream. parse considers the {h, m, s} information insufficient for uniquely determining an instant in time (a system_clock::time_point), so this parse fails.

You can make this work by parsing into a seconds duration instead:

#include "date/date.h" #include <sstream> int main() { std::stringstream ssTime; ssTime << "17:34:05"; std::chrono::seconds tp_time; ssTime >> date::parse("%H:%M:%S", tp_time); } 

tp_time will have the value of 63245s in this example.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.