Jeff Garland wrote:
On Wed, 26 Oct 2005 09:26:43 +0200, Roman Morokutti wrote
Is it possible to parse a date out from a string like this? The example below is from a java program.
private static final String PLANSTART_PATTERN = "dd.MM.yyyy HH:mm";
Yes, trivially.
IMHO, not trivial enough for such a trivial (and common) task.
ptime parse_jdate1(const std::string& s) {
ptime t; try { std::stringstream ss(s.c_str()); time_input_facet* timefacet = new time_input_facet("%d.%m.%Y %H:%M"); ss.imbue(std::locale(std::locale::classic(), timefacet)); ss.exceptions(std::ios_base::failbit); // turn on exceptions ss >> t; } catch(std::exception& e) { std::cout << e.what() << std::endl; } return t;
}
I think the best way would be to support something like ptime t; my_istream >> time_format("%d.%m.%Y %H:%M") >> t; time_format would be defined as something similar to implemetation_defined time_format(const char *format, const std::locale &loc = std::locale::classic()); and using io manipulators it will do all the magic (facet/imbue/whatever) stuff automatically. This will be much easier to use... Just a thought, Yuval