11 Eylül 2017 Pazartesi

date time_points

Giriş
Şu satırı dahil ederiz.
#include "date.h"
Şu satırı dahil ederiz.
using namespace date;
using namespace std::chrono_literals;
Bu kütüphane Howard Hinnat tarafından geliştirilmiş. sys ile başlayan sınıflar UTC olarak çalışıyor.

local_days Sınıfı
Örnek ver

local_seconds Sınıfı
Constructor
Şöyle yaparız


date::local_seconds tp;
local_time Sınıfı
Giriş
Açıklaması şöyle
local_time is a time associated with an as yet unspecified time zone.
Constructor
Şöyle yaparız.
local_time<microseconds> tp;
operator >> metodu
Şöyle yaparız.
std::string date_time_str = ...;

using namespace date;
constexpr auto fmt = "%F %T";
istringstream in {date_time_str};
local_time<microseconds> tp;
in >> parse(fmt, tp);
if (in.fail())
{...} 

sys_days Sınıfı
Giriş
Açıklaması şöyle
A count of days since system_clock's epoch. This is a serial-based time point with a resolution of one day.
Bu sınıfın eski ismi day_point imiş.

Constructor
Şöyle yaparız.
sys_days days {2017_y/mar/21};
operator == metodu
Şöyle yaparız.
std::chrono::system_clock::time_point tp = ...;

using namespace date;
using namespace std::chrono_literals;
assert(tp == sys_days(2010_y/dec/30) + 1h + 20min + 30s + 123456us);
Eğer C++11 kullanıyorsak şöyle yaparız.
using namespace std::chrono;
assert(tp == sys_days(2010_y/dec/30) + hours{1} + minutes{20} +
                                     seconds{30} + microseconds{123456});
time_since_epoch metodu
Şöyle yaparız.
using namespace date;
using namespace std::chrono_literals;
uint64_t k = (sys_days{2017_y/mar/21} + 10h + 27min + 5s + 
             123456789ns).time_since_epoch().count();
std::cout << k << '\n';
Çıktı olarak şunu alırız.
1490092025123456789
sys_seconds Sınıfı
Örnek ver

sys_time Sınıfı
Açıklaması şöyle
sys_time is a time_point associated with the return of system_clock::now() and represents Unix Time which very closely approximates UTC.
UTC zamanı temsil eder. İki kısımdan oluşur.  system_seconds ve sys_days
Açıklaması şöyle
This is a serial time point and a std::chrono::time_point of arbitrary precision. It has sys_seconds and sys_days convenience precisions.
time_since_epoch metodu
Şöyle yaparız.
zoned_time zt = ...;
std::cout << floor<seconds>(zt.get_sys_time()).time_since_epoch() << '\n';

Hiç yorum yok:

Yorum Gönder