ss.imbue(german);
main() {#ifndef BOOST_DATE_TIME_NO_LOCALE  using namespace boost::gregorian;  using namespace boost::posix_time;  std::stringstream ss;  date d1(2002,May,1);  ptime t1(d1, hours(12)+minutes(10)+seconds(5));  ss << t1;  check("check time output: "+ss.str(),         ss.str() == std::string("2002-May-01 12:10:05"));  //Send out the same time with german  std::locale global;  typedef boost::date_time::all_date_names_put<greg_facet_config> date_facet;  std::locale german(global,                      new date_facet(de_short_month_names,                                     de_long_month_names,                                    de_special_value_names,                                    de_short_weekday_names,                                    de_long_weekday_names,                                    '.',                                    boost::date_time::ymd_order_dmy,                                    boost::date_time::month_as_short_string));   ss.imbue(german);   ss.str("");  ss << t1;  check("check time output: "+ ss.str(),         ss.str() == std::string("01.Mai.2002 12:10:05"));  time_duration td(5,4,3);  time_duration td1(-1,25,0), td2(0,-40,0);  ss.str("");  ss << td;  check("check time period output: "+ ss.str(),         ss.str() == std::string("05:04:03"));  ss.str("");  ss << td1;  check("check time period output: "+ ss.str(),         ss.str() == std::string("-01:25:00"));  ss.str("");  ss << td2;  check("check time period output: "+ ss.str(),         ss.str() == std::string("-00:40:00"));  ss.imbue(global);   time_period tp(t1, ptime(d1, hours(23)+time_duration::unit()));  ss.str("");  ss << tp;  check("check time period output: "+ ss.str(),         ss.str() == std::string("[2002-May-01 12:10:05/2002-May-01 23:00:00]"));  ss.imbue(german);   ss.str("");  ss << tp;  check("check time period output - german: "+ ss.str(),         ss.str() == std::string("[01.Mai.2002 12:10:05/01.Mai.2002 23:00:00]"));  /* Input streaming is only available for compilers that     * do not have BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS defined */#ifndef BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS    /****** test streaming in for time classes ******/  {    std::istringstream iss("01:02:03.000004 garbage");    iss >> td;#ifdef BOOST_DATE_TIME_HAS_NANOSECONDS    check("Stream in time_duration", td == time_duration(1,2,3,4000));#else    check("Stream in time_duration", td == time_duration(1,2,3,4));#endif  }#if !defined(BOOST_NO_STD_ITERATOR_TRAITS) // vc6 & vc7  {    std::istringstream iss("2003-May-13 01:02:03");    iss >> t1;    check("Stream in ptime", t1 == ptime(date(2003,May,13), time_duration(1,2,3)));    std::istringstream iss2("2003-January-13 01:02:03");    iss2 >> t1;    check("Stream in ptime2", t1 == ptime(date(2003,Jan,13), time_duration(1,2,3)));    std::istringstream iss3("2003-feb-13 11:10:09");    iss3 >> t1;    check("Stream in ptime3", t1 == ptime(date(2003,Feb,13), time_duration(11,10,9)));    try {      std::istringstream iss4("2003-xxx-13 11:10:09");      iss3 >> t1;      check("Stream bad ptime", false); //never reach here, bad month exception    }    catch(std::exception& e) {      std::cout << "Got expected exception: " << e.what() << std::endl;      check("Stream bad ptime", true);     }  }  {    date d1(2001,Aug,1), d2(2003,May,13);#ifdef BOOST_DATE_TIME_HAS_NANOSECONDS    time_duration td1(15,32,18,20304000), td2(1,2,3);#else    time_duration td1(15,32,18,20304), td2(1,2,3);#endif    time_period result(ptime(d1,td1), ptime(d2,td2));    std::istringstream iss("[2001-Aug-01 15:32:18.020304/2003-May-13 01:02:03]");    iss >> tp;    check("Stream in time_period", tp == result);  }#if !defined(BOOST_NO_STD_WSTRING)  /*** wide streaming ***/  {    std::wistringstream wiss1(L"01:02:03");//.000004");    wiss1 >> td;    check("Wide stream in time_duration", td == time_duration(1,2,3));        std::wistringstream wiss2(L"2003-May-23 03:20:10");    wiss2 >> t1;    check("Wide stream in ptime", t1 == ptime(date(2003,May,23), time_duration(3,20,10)));        std::wistringstream wiss3(L"[2004-Jan-01 02:03:04/2004-May-13 01:00:00]");    wiss3 >> tp;    date d1 = date(2004,Jan,1);    date d2 = date(2004,May,13);    time_duration td1 = time_duration(2,3,4);    time_duration td2 = time_duration(1,0,0);    time_period result = time_period(ptime(d1,td1), ptime(d2,td2));    check("Wide stream in time_period", tp == result);  }#else  check("Wide streaming not available for this compiler", false);#endif // BOOST_NO_STD_WSTRING#else  // BOOST_NO_STD_ITERATOR_TRAITS  check("Streaming in of alphabetic dates (Ex: 2003-Aug-21) \      not supported by this compiler", false);#endif // BOOST_NO_STD_ITERATOR_TRAITS#else // BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS  check("Streaming in of time classes not supported by this compiler", false);#endif // BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS  #else  //BOOST_DATE_TIME_NO_LOCALE  check("No tests executed - Locales not supported by this compiler", false);#endif //BOOST_DATE_TIME_NO_LOCALE  return printTestStats();}