
My apologies for not specifing this earlier - i just assumed that many people had previously run into it. Michael Mathews is correct about the operator<<() and strftime.c being the cause of this issue. operator<<(ostream&, time_duration const&) basically converts the time_duration object to a tm struct using the function boost::posix_time::to_tm(time_duration const&). At this point, the tm structure contains an hours value of 24 - which Microsoft considers to be out-of-range. Further down the stack the _Strftime_l() function verifies the tm structure and everything comes to a crashing halt at this point. The MSDN docs for _Strftime_l() states that this function will check the tm struct for invalid and out-of-range values and will call the invalid parameter handler in this case. Hope that helps :-)