peerplays-fc/src/time.cpp

31 lines
1.2 KiB
C++
Raw Normal View History

2013-01-25 18:21:14 +00:00
#include <fc/time.hpp>
#include <fc/variant.hpp>
2012-09-08 02:50:37 +00:00
#include <boost/chrono/system_clocks.hpp>
2012-11-18 06:07:10 +00:00
#include <boost/date_time/posix_time/posix_time.hpp>
2012-10-18 02:44:21 +00:00
#include <sstream>
2012-09-08 02:50:37 +00:00
namespace fc {
namespace bch = boost::chrono;
time_point time_point::now() {
return time_point(microseconds(bch::duration_cast<bch::microseconds>(bch::system_clock::now().time_since_epoch()).count()));
}
2012-10-18 02:44:21 +00:00
time_point::operator fc::string()const {
bch::system_clock::time_point tp;
tp += bch::microseconds( elapsed._count);
time_t tt = bch::system_clock::to_time_t(tp);
2013-01-25 18:21:14 +00:00
return boost::posix_time::to_iso_string( boost::posix_time::from_time_t(tt) + boost::posix_time::microseconds( elapsed._count % 1000000 ) );
2012-10-18 02:44:21 +00:00
}
2013-01-20 20:44:16 +00:00
time_point time_point::from_iso_string( const fc::string& s ) {
auto pt = boost::posix_time::from_iso_string(s);
//return fc::time_point(fc::seconds( (pt - boost::posix_time::from_time_t(0)).total_seconds() ));
return fc::time_point(fc::microseconds( (pt - boost::posix_time::from_time_t(0)).total_microseconds() ));
2013-01-20 20:44:16 +00:00
}
void to_variant( const fc::time_point& t, variant& v ) {
2013-01-20 20:44:16 +00:00
v = fc::string(t);
}
void from_variant( const fc::variant& v, fc::time_point& t ) {
t = fc::time_point::from_iso_string(v.as_string());
2013-01-20 20:44:16 +00:00
}
2012-09-08 02:50:37 +00:00
}