#include <boost/chrono/chrono_io.hpp>
#include <ostream>
#include <iostream>
template <class CharT, class Traits, class Rep, class Period>
std::basic_ostream<CharT, Traits>&
display(std::basic_ostream<CharT, Traits>& os,
boost::chrono::duration<Rep, Period> d)
{
using std::cout;
using namespace boost;
using namespace boost::chrono;
typedef duration<long long, ratio<86400> > days;
typedef duration<long long, centi> centiseconds;
if (d < duration<Rep, Period>(0))
{
d = -d;
os << '-';
}
centiseconds cs = duration_cast<centiseconds>(d);
if (d - cs > milliseconds(5)
|| (d - cs == milliseconds(5) && cs.count() & 1))
++cs;
seconds s = duration_cast<seconds>(cs);
cs -= s;
minutes m = duration_cast<minutes>(s);
s -= m;
hours h = duration_cast<hours>(m);
m -= h;
days dy = duration_cast<days>(h);
h -= dy;
os << dy.count() << '/';
if (h < hours(10))
os << '0';
os << h.count() << ':';
if (m < minutes(10))
os << '0';
os << m.count() << ':';
if (s < seconds(10))
os << '0';
os << s.count() << '.';
if (cs < centiseconds(10))
os << '0';
os << cs.count();
return os;
}
int main()
{
using std::cout;
using namespace boost;
using namespace boost::chrono;
#ifdef BOOST_CHRONO_HAS_CLOCK_STEADY
display(cout, steady_clock::now().time_since_epoch()
+ duration<long, mega>(1)) << '\n';
#endif
display(cout, -milliseconds(6)) << '\n';
display(cout, duration<long, mega>(1)) << '\n';
display(cout, -duration<long, mega>(1)) << '\n';
}