Boost logo

Boost Users :

From: Jeff Garland (jeff_at_[hidden])
Date: 2006-09-25 09:31:05


Johan Nilsson wrote:
> Hi,
>
> is there any way to force ptime stream input fail when the time duration
> part is not between 00:00:00 and 23:59:59?
>
> I'm using a time_input_facet with a formatting string of "%Y-%m-%d %H:%M:%S"
> imbued into a streams with exceptions(failbit) enabled. I'd like an
> exception raised when time parts such as 25:00:00 are parsed instead of
> getting
> the next day's date.
>
> I guess I could use regex validation, but was hoping to have support for
> this in the date_time library.
>
> Currently using cvs boost (RC_1_34_0).

Since these are treated as a time_duration for i/o there isn't a switch in the
library to do this. I think the easiest way to do this would be to break down
the streaming into it's parts and check in your client code. Here's the
sketch if how it can be trivially done:

ptime getTime(istream& is)
{
    //assuming formatting is already set...
    date d;
    time_duration td;
    is >> d;
    is >> td;
    if (td > hours(24)) {
      throw ....
    }
    return ptime(d, td);
}

Jeff


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net