Giriş
Şu satır dahil edilir.
Chrono için eski derleyiciler ile typdef kullanılır.
time_point döner.
Örnek
Şöyle yaparız
Şöyle yaparız.
now metodu
Bir time_point döndürür. Windows'ta now metodu GetSystemTimeAsFile metodunu kullanır.
time_since_epoch
Bu metod sadece system_clock sınıfında var. Diğer saatlerde yok. Epoch'tan beri geçen süreyi saatin ölçüm birimi cinsinden verir. Saatin birimi nanosaniye de olabilir, milisaniye de. Örnekte epoch'tan beri geçen süre milisaniye ye çevriliyor.
Şu satır dahil edilir.
#include <chrono>
tanımlamaChrono için eski derleyiciler ile typdef kullanılır.
typedef std::chrono::system_clock Clock;
Yeni derleyiciler ile using kullanılır.using Clock = std::chrono::system_clock;
from_time_t metodutime_point döner.
Örnek
Şöyle yaparız
time_t t = ...;
system_clock::time_point tp = std::chrono::system_clock::from_time_t (t);
ÖrnekŞöyle yaparız.
std::tm tm =...;
auto time_point = std::chrono::system_clock::from_time_t(std::mktime(&tm));
now metodu
Bir time_point döndürür. Windows'ta now metodu GetSystemTimeAsFile metodunu kullanır.
time_since_epoch
Bu metod sadece system_clock sınıfında var. Diğer saatlerde yok. Epoch'tan beri geçen süreyi saatin ölçüm birimi cinsinden verir. Saatin birimi nanosaniye de olabilir, milisaniye de. Örnekte epoch'tan beri geçen süre milisaniye ye çevriliyor.
#include <iostream>
#include <chrono>
#include <ctime>
using namespace std::chrono;
int main()
{
high_resolution_clock::time_point p = high_resolution_clock::now();
milliseconds ms = duration_cast<milliseconds>(p.time_since_epoch());
}
to_time_t metodu
Bu metod static'tir yani state tutmaz sadece verilen değeri time_t yapısına çevirir. Metod sadece system_clock sınıfında var ve amacı C API'si ile beraber çalışabilmeyi sağlamak. Epoch'tan beri geçen süreyi saniye cinsinden verir.#include <iostream>
#include <chrono>
#include <ctime>
using namespace std::chrono;
int main()
{
system_clock::time_point p = system_clock::now();
std::time_t t = system_clock::to_time_t(p);
std::cout << std::ctime(&t) << std::endl; //Tue Sep 27 14:21:13 2011
}
Saat ve dakika bilgisine kadar sistem saatini yazdırmak için strftime kullanırız. Şöyle yaparız.void print_date(std::chrono::time_point<std::chrono::system_clock> tp){
time_t raw_time = system_clock::to_time_t(tp);
tm* time_info = localtime(&raw_time);
char date[20] = {};
strftime(date, 20, "%Y-%m-%d %H:%M", time_info);
cout << date;
}
Milisaniye için şöyle yaparız.std::string TimePointToISOString(const time_point<system_clock>& time)
{
std::time_t rawTime = std::chrono::system_clock::to_time_t(time);
struct tm timeinfo;
localtime_s(&timeinfo, &rawTime);
milliseconds ms = duration_cast<milliseconds>(time.time_since_epoch());
std::size_t frac_seconds = ms.count() % 1000;
char buffer[32];
std::strftime(buffer, 32, "%Y-%m-%dT%H:%M:%SZ", &timeinfo);
std::string bufferStr(buffer);
std::stringstream ss;
ss << bufferStr.substr(0, 19) << "." << std::setw(3)
<< std::setfill ('0') << frac_seconds << bufferStr.substr(20);
return ss.str();
}
Aynı şey için std::put_time da kullanılabilir.
Hiç yorum yok:
Yorum Gönder