static string_type fractional_seconds_as_string(const time_duration_type& a_time, bool null_when_zero) { typename time_duration_type::fractional_seconds_type frac_sec = a_time.fractional_seconds(); if (null_when_zero && (frac_sec == 0)) { return string_type(); } std::basic_ostringstream<char_type> ss; ss.imbue(std::locale::classic()); // don't want any formatting ss << std::setw(time_duration_type::num_fractional_digits()) << std::setfill(static_cast<char_type>('0')); #if (defined(BOOST_MSVC) && (_MSC_VER <= 1200)) // 1200 == VC++ 6.0 // JDG [7/6/02 VC++ compatibility] char_type buff[34]; ss << _i64toa(static_cast<boost::int64_t>(frac_sec), buff, 10); #else ss << frac_sec; #endif return ss.str(); }
//! Put time into an ostream static void duration_put(const time_duration_type& td, ostream_type& os) { if(td.is_special()) { os << td.get_rep(); } else { charT fill_char = '0'; if(td.is_negative()) { os << '-'; } os << std::setw(2) << std::setfill(fill_char) << absolute_value(td.hours()) << ":"; os << std::setw(2) << std::setfill(fill_char) << absolute_value(td.minutes()) << ":"; os << std::setw(2) << std::setfill(fill_char) << absolute_value(td.seconds()); fractional_seconds_type frac_sec = absolute_value(td.fractional_seconds()); if (frac_sec != 0) { os << "." << std::setw(time_duration_type::num_fractional_digits()) << std::setfill(fill_char) << frac_sec; } } // else } // duration_put
//! Put time into an ostream static void duration_put(const time_duration_type& td, ostream_type& os) { os << std::setw(2) << std::setfill('0') << td.hours() << ":"; os << std::setw(2) << std::setfill('0') << td.minutes() << ":"; os << std::setw(2) << std::setfill('0') << td.seconds(); fractional_seconds_type frac_sec = td.fractional_seconds(); if (frac_sec != 0) { os << "." << std::setw(time_duration_type::num_fractional_digits()) << std::setfill('0') << frac_sec; } } // duration_put