Giriş
Şu satırı dahil ederiz.
parse metodu
Bu metod her zaman bir istringstream ile beraber kullanılır. isringstream'den okuyarark parse işlemini gerçekleştirir.parse işleminin sonucunu stream'in fail() metodu ile alırız. Açıklaması şöyle.
date::year_month_day parse etmek için şöyle yaparız.
date::sys_seconds parse etmek için şöyle yaparız.
date::local_seconds parse etmek için şöyle yaparız.
Açıklaması şöyle.
clock sınıflarının stream'e yazdırılabilmesini sağlar. Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Ş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ş. IANA tarafından güncellenen TZ veritabanını kullanıyor.parse metodu
Bu metod her zaman bir istringstream ile beraber kullanılır. isringstream'den okuyarark parse işlemini gerçekleştirir.parse işleminin sonucunu stream'in fail() metodu ile alırız. Açıklaması şöyle.
The precision of the parse is controlled by the precision of the time_point that you input into the parse function, instead of by a formatting flag. The parse will attempt to parse as many decimal digits as your time_point will hold, but will gracefully give up if it gets less digitsÖrnek - date::year_month_day
date::year_month_day parse etmek için şöyle yaparız.
const std::string str = ...;
static vector<string> date_formats
{
"%Y-%m-%d",
"%Y/%m/%d",
"%m-%d-%Y",
"%m/%d/%Y",
"%d-%b-%Y",
"%Y%m%d"
};
istringstream is;
date::year_month_day dt;
size_t i;
for (i = 0; i < date_formats.size(); ++i)
{
is.clear();
is.str(str);
is >> date::parse(date_formats[i], dt);
if (!is.fail())
{
std::cout << dt.year() << "\t" << dt.month() << "\t" << dt.day();
}
}
Örnek - date::sys_time
date::sys_time parse etmek için şöyle yaparız.sys_time<nanoseconds> tp; // type-alias for a system_clock::time_point
// with nanoseconds precision
ss >> date::parse("%FT%TZ", tp); // still ok
Örnek - date::sys_secondsdate::sys_seconds parse etmek için şöyle yaparız.
std::string str= "2017-01-31T02:15:63Z";
std::string format = "%Y-%m-%dT%H:%M:%SZ";
std::stringstream ss {str};
date::sys_seconds outputTime;
ss >> date::parse(format, outputTime);
if (ss.fail())
{
std::cout << "Failure" << std::endl;
}
using date::operator<<;
std::cout << outputTime << std::endl;
Çıktı olarak şunu alırızçünkü saniye 63 verilmiştir.Failure
1970-01-01 00:00:00
Örnek - date::local_secondsdate::local_seconds parse etmek için şöyle yaparız.
date::local_seconds tp;
std::istringstream in{"2017-09-08 11:30:15"};
in >> date::parse("%Y-%m-%d %H:%M:%S", tp);
Örnek - std::chrono::system_clock::time_pointAçıklaması şöyle.
"%F" is a shortcut for "%Y-%m-%d". You can use either.std::chrono::system_clock::time_point parse etmek için şöyle yaparız.
"%T" is a shortcut for "%H:%M:%S". You can use either.
std::chrono::system_clock::time_point tp;
std::istringstream ss{"2010-12-30T01:20:30.123456Z"};
ss >> date::parse("%FT%TZ", tp);
assert(!ss.fail());
operator << metoduclock sınıflarının stream'e yazdırılabilmesini sağlar. Şöyle yaparız.
#include <iostream>
#include <chrono>
#include "date.h"
typedef std::chrono::high_resolution_clock high_resolution_clock;
using date::operator<<;
int main()
{
std::cout << high_resolution_clock::now() << std::endl; // works!!
}
Çıktı olarak şunu alırız.
2017-09-22 10:48:50.749896053
year_month_day Sınıfı
Constructor
Şöyle yaparızConstructor
auto d1 = 1500_y/jun/1;
auto d2 = 4500_y/jun/1;
day metoduŞöyle yaparız.
date::year_month_day dt = ...;
std::cout << dt.day();
month metoduŞöyle yaparız.
date::year_month_day dt = ...;
std::cout << dt.month();
operator<< metodu
Şöyle yaparızauto d1 = 1500_y/jun/1;
std::cout << d1 <<'\n';
Çıktı olarak şunu alırız1500-06-01
operator+ metodu
Şöyle yaparız
Şöyle yaparız.
using namespace date;
auto d1 = 1500_y/jun/1;
const auto duration = years{3000};
const auto d3 = d1 + duration;
year metoduŞöyle yaparız.
date::year_month_day dt = ...;
std::cout << dt.year();
duration Sınıfları
date durations yazısına taşıdım.
Hiç yorum yok:
Yorum Gönder