11 Eylül 2017 Pazartesi

locale

date_time Sınıfı
Bu sınıfı ilk olarak burada gördüm.

Constructor
Şöyle yaparız.
namespace as = boost::locale::as;

std::string timezone = ...;
auto glob = boost::locale::localization_backend_manager::global();
glob.select("icu"); // select icu backend
boost::locale::generator gen{glob};

auto loc = gen.generate(""); // generate locale with boost facets
auto cal = boost::locale::calendar{loc, timezone};

boost::locale::date_time dt{cal};
localization_backend_manager Sınıfı
Açıklaması şöyle
Backends are usually registered inside the localization backends manager and allow transparent support of different backends, so a user can switch the backend by simply linking the application to the correct one.
get_all_backends metodu
Şöyle yaparız. Benim kurulumumda winapi ve std görünüyor.
auto s = lbm.get_all_backends();
for_each(s.begin(), s.end(), [](string& x){ cout << x << endl; });
global metodu
Şöyle yaparız.
localization_backend_manager lbm = localization_backend_manager::global();
select metodu
Şöyle yaparız.
lbm.select("icu");
Şöyle yaparız.
lbm.select("std");
time_zone metodu
Şöyle yaparız
namespace as = boost::locale::as;

void foo(std::string time, std::string timezone) {
  auto glob = boost::locale::localization_backend_manager::global();
  glob.select("icu"); // select icu backend
  boost::locale::generator gen{glob};

  auto loc = gen.generate(""); // generate locale with boost facets
  auto cal = boost::locale::calendar{loc, timezone};

  boost::locale::date_time dt{cal};

  std::stringstream ss{time};
  ss.imbue(loc);
  std::cout.imbue(loc);

  ss >> as::ftime("%Y-%m-%d %T") >> as::time_zone(timezone) >> dt;
  std::cout << as::time_zone("UTC") << dt << std::endl;
  std::cout << as::time_zone(timezone) << dt << std::endl;
}


Hiç yorum yok:

Yorum Gönder