21 Temmuz 2016 Perşembe

boost Time Duration Sınıfları

Giriş
Posix Time başlığı altında şu sınıflar var. time_duration, hours, minutes,seconds, milliseconds,nanoseconds

microseconds sınıfı
Şu satırı dahil ederiz.
#include <boost/date_time/posix_time/posix_time.hpp>
Constructor
Şöyle yaparız.
uint64_t val = ...;
boost::posix_time::microseconds (val);
milliseconds sınıfı
Constructor
Şöyle yaparız.
long ms = ...;
boost::posix_time::milliseconds(ms);
second sınıfı
Şu satırı dahil ederiz.

#include <boost/date_time/posix_time/posix_time.hpp>
Constructor
Şöyle yaparız.

boost::posix_time::seconds(5)
time_duration sınıfı
Şu satırı dahil ederiz.
#include <boost/date_time/posix_time/posix_time_duration.hpp>
Constructor - hour , minute, second
Şöyle yaparız
time_duration lockTimeout(0, 0, 10); // h,m,s
Constructor - microseconds
Şöyle yaparız
uint64_t val = static_cast<uint64_t>( 5000000000 * 1000000 );
time_duration t = boost::posix_time::microseconds (val);
Constructor - ptime arithmetic
Şöyle yaparız.
ptime pt = ...;
ptime timet_start = ...;
time_duration diff = pt - timet_start;
operator <<
Şöyle yaparız.
uint64_t val = static_cast<uint64_t>( 5000000000 * 1000000 );
std::cout << val << std::endl;
time_duration t = boost::posix_time::microseconds( val );
std::cout << t << std::endl;
Çıktı olarak şunu alırız.
5000000000000000
1388888:53:20
Şöyle hesaplarız.
1388888*3600+53*60+20 = 5000000000000000

total_milliseconds metodu
Şöyle yaparız
diff.total_milliseconds();
total_seconds metodu
İçi şöyledir. int32_t döndüğü için büyük sayılarda hataya sebep olabilir.
sec_type total_seconds() const
{
  return static_cast<sec_type>(ticks() / ticks_per_second());
}
Şöyle yaparız.
boost::posix_time::ptime time1 = ...;;
boost::posix_time::ptime epoch = ...;

time_duration diff = time1-epoch;
cout << diff.total_seconds();

Hiç yorum yok:

Yorum Gönder