16 Şubat 2018 Cuma

date_time time_duration Sınıfı

time_duration Sınıfı
Giriş
Şu satırı dahil ederiz.
#include <boost/date_time/posix_time/posix_time.hpp>
Tanımlama
Şöyle yaparız.
typedef boost::posix_time::time_duration Duration;
Consructor - ptime arithmetic
Şöyle yaparız.
boost::posix_time::ptime& p2 = ...;
boost::posix_time::ptime p1 {boost::gregorian::date{1970, 1, 1}};
boost::posix_time::time_duration diff {p2 - p1};
Consructor - ptime
Şöyle yaparız.
boost::posix_time::ptime now = boost::posix_time::microsec_clock::local_time();
auto time = now.time_of_day();
Constructor - hours,minutes,seconds,fractional_seconds
Şöyle yaparız.
time_duration t1 = seconds(1);
time_duration t2 = milliseconds(1000);
time_duration t3 = microseconds(1000000);
Şöyle yaparız.
boost::posix_time::time_duration t = nanoseconds(1000000000);
hour metodu
Şöyle yaparız.
using boost::posix_time::time_from_string;

auto time = time_from_string("2017-09-25 12:23:10").time_of_day();

int hours = time.hours();
int minutes = time.minutes();
operator << metodu
Şöyle yaparız.
boost::posix_time::time_duration t = nanoseconds(1000000000);
std::cout << t << "\n";
Çıktı olarak şunu alırız.
00:00:01
total_microseconds metodu
Şöyle yaparız.
boost::posix_time::ptime now = boost::posix_time::microsec_clock::local_time();
double sec = now.time_of_day().total_microseconds()/1000000.0;
total_milliseconds metodu
Şöyle yaparız.
posix_time::ptime t1 = posix_time::microsec_clock::universal_time();
...
posix_time::ptime t2 = posix_time::microsec_clock::universal_time();

log << "Time Taken : " << (t2 - t1).total_milliseconds() << " ms";
total_seconds metodu
Süre içindeki toplam saniyeyi verir. Şöyle yaparız
auto rng = std::mt19937 { std::random_device{}() }; //random generator

auto date_selector = [&](boost::posix_time::time_duration window =
 boost::posix_time::hours(24*10),
 ptime now = boost::posix_time::second_clock::local_time()) {
  auto start = now - window;
  unsigned size = (now - start).total_seconds();
  return [=]() mutable {
    return start + seconds(std::uniform_int_distribution<unsigned>(0,size)(rng));
  };
};
Kullanmak için şöyle yaparız.
auto seven_days = date_selector(hours(7*24));
std::cout << "seven_days:\n";
for (auto i = 10; i; --i) std::cout << "\t" << seven_days() << "\n";

auto ten_minutes = date_selector(minutes(10));
std::cout << "ten_minutes:\n";
for (auto i = 10; i; --i) std::cout << "\t" << ten_minutes() << "\n";
ticks metodu
Şöyle yaparız.
std::time_t result;
boost::posix_time::time_duration diff = ...

result = (diff.ticks() / diff.ticks_per_second());
ticks_per_second metodu
Örnek ver

hours Sınıfı
Şöyle yaparız.
boost::posix_time::hours (24*10)
millisec Sınıfı 
Örnek ver.

minutes Sınıfı
Şöyle yaparız.
boost::posix_time::minutes(10)
nanosec Sınıfı 
Örnek ver.

seconds Sınıfı
Şöyle yaparız.
auto s = boost::posix_time::seconds (5);

Hiç yorum yok:

Yorum Gönder