Giriş
Şu satırı dahil ederiz.
current_zone metodu
strftime gibi çalışır. zoned_time nesnesini formatlar.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Şu satırı dahil ederiz.
#include "tz.h"
Bu kütüphane Howard Hinnant tarafından geliştirilmiş.current_zone metodu
time_zone* döner. Windows Time Zone isminden IANA Time Zone ismine çevirir.
Örnek
Şöyle yaparız.
#include "date/tz.h"
#include <iostream>
std::cout << date::current_zone()->name() << '\n';
Çıktı olarak şunu alırız.America/New_York
format metodustrftime gibi çalışır. zoned_time nesnesini formatlar.
Örnek
Şöyle yaparız.
date::format("%A", date::make_zoned("Europe/Rome", std::chrono::system_clock::now())
ÖrnekŞöyle yaparız.
constexpr auto fmt = "%F %T";
auto cet_time = make_zoned("...", ...);
return format(fmt, cet_time);
locate_zone metodu
Şöyle yaparız.
Constructor - zone + system_clock
Şöyle yaparız
Şöyle yaparız
İki zaman dilimi arasında çevrim yapar. Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Nesnesi %F %T %Z olarak formatlar.
Örnek
Şöyle yaparız.
int
main(int argc, char **argv)
{
try
{
auto tz = date::locate_zone(argv[1]);
std::cout << "good timezone " << tz->name() << std::endl;
}
catch (std::exception const& e)
{
std::cout << "bad timezone " << e.what() << std::endl;
}
}
Çıktı olarak şunu alırız.
good timezone America/New_York
Hata varsa çıktı olarak şunu alırız.
bad timezone America/New_Yor not found in timezone database
make_zoned metodu
Birinci parametre zaman dilimi ismi, ikinci parametre local_time cinsinden nesnedir. zoned_time nesnesi döner.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Saat dilimini bilen saati temsil eder.Örnek
Şöyle yaparız.
std::cout << date::make_zoned("Europe/Rome", std::chrono::system_clock::now()) << '\n';
Çıktı olarak şunu alırız2017-11-29 16:24:32.710766 CET
ÖrnekŞöyle yaparız.
date::sys_seconds my_parse (const std::string& in)
{
using namespace std;
using namespace std::chrono;
using namespace date;
local_seconds ls;
istringstream infile{in};
infile >> parse("%F", ls);
assert(!infile.fail());
return make_zoned("America/Los_Angeles", ls + seconds{1}).get_sys_time();
}
Çağırmak için şöyle yaparız.std::cout << my_parse("2017-05-04").time_since_epoch().count() << '\n';
Çıktı olarak şunu alırız1493881201
ÖrnekŞöyle yaparız.
auto tz = date::locate_zone(argv[1]);
std::cout << "good timezone " << tz->name() << std::endl;
date::local_seconds tp;
std::istringstream in{"2017-09-08 11:30:15"};
in >> date::parse("%Y-%m-%d %H:%M:%S", tp);
auto zt = date::make_zoned(tz, tp);
zoned_time SınıfıConstructor - zone + system_clock
Şöyle yaparız
auto zt = make_zoned(current_zone(), system_clock::now());
Constructor - zone + local_daysŞöyle yaparız
auto zt = make_zoned(current_zone(),
local_days{2016_y/oct/5} + 17h + 36min + 27s + 701162us);
Şöyle yaparızauto zt = make_zoned("Europe/Madrid",
local_days{2016_y/oct/5} + 17h + 36min + 27s + 701162us);
Constructor - zone + local_timeİki zaman dilimi arasında çevrim yapar. Şöyle yaparız.
local_time<microseconds> tp = ...;
auto et_time = make_zoned("America/New_York", tp);
auto cet_time = make_zoned("Europe/Paris", et_time); // 11
get_local_time metoduŞöyle yaparız.
std::cout << "local_time: " << az.get_local_time() << '\n';
Çıktı olarak şunu alırız.local_time: 2016-10-05 17:36:27.701162
get_time_zone metoduŞöyle yaparız.
std::cout << "Zone " << zt.get_time_zone()->name() << '\n';
Çıktı olarak şunu alırız.Zone Europe/Madrid
get_sys_time metoduÖrnek
Şöyle yaparız.
std::cout << "utc_time: " << az.get_sys_time() << '\n';
Çıktı olarak şunu alırız.utc_time: 2016-10-05 15:36:27.701162
ÖrnekŞöyle yaparız.
#include "tz.h"
#include <iostream>
#include <sstream>
int
main(int argc, char **argv)
{
try
{
auto tz = date::locate_zone(argv[1]);
std::cout << "good timezone " << tz->name() << std::endl;
date::local_seconds tp;
std::istringstream in{"2017-09-08 11:30:15"};
in >> date::parse("%Y-%m-%d %H:%M:%S", tp);
auto zt = date::make_zoned(tz, tp);
std::cout << date::format("%Y-%m-%d %T %Z which is ", zt);
std::cout << date::format("%Y-%m-%d %T %Z\n", zt.get_sys_time());
}
catch (std::exception const& e)
{
std::cout << "bad timezone " << e.what() << std::endl;
}
}
Çıktı olarak şunu alırızgood timezone America/New_York
2017-09-08 11:30:15 EDT which is 2017-09-08 15:30:15 UTC
Eğer hata varsa çıktı olarak şunu alırızbad timezone America/New_Yor not found in timezone database
operator << metoduNesnesi %F %T %Z olarak formatlar.
Örnek
Şöyle yaparız.
auto et_time = make_zoned("...", ...);
cout << "et_time = " << et_time << '\n';
Hiç yorum yok:
Yorum Gönder