9 Kasım 2017 Perşembe

date_time posix_time::time_facet Sınıfı

Giriş
Şu satırı dahil ederiz.
#include <boost/date_time/posix_time/posix_time_io.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
Açıklaması şöyle. date_facet ile aynı işi görür. Bu iki sınıf arasındaki farkı anlamadım.
The boost::date_time::time_facet is an extension of the boost::date_time::date_facet.
ptime nesnesini stream'e yazdırmak için kullanılır.

Constructor
Örnek
Şöyle yaparız.
boost::posix_time::time_facet("%Y-%m-%d %H:%M:%S");
Örnek
Şöyle yaparız.
auto m_facet = new boost::posix_time::wtime_facet(L"%Y%m%d-%H:%M:%f");
Örnek
Şöyle yaparız.
boost::posix_time::time_facet("%Y/%m/%d %H:%M");
Kullanım
1.Facet kullanılarak yeni bir locale yaratılır.
Örnek
Şöyle yaparız.
namespace /*static*/ {
  // Defined elsewhere
  auto m_facet = new boost::posix_time::wtime_facet(L"%Y%m%d-%H:%M:%f");
  std::locale m_locale(std::wcout.getloc(), m_facet);
}
Örnek
Şöyle yaparız.
std::string facetStr = "%Y/%m/%d %H:%M";
std::locale l (std::locale::classic(),
  new boost::posix_time::time_facet(facetStr.c_str())));
2.Daha sonra locale bir stream'e geçilir
Örnek
Şöyle yaparız
std::wstring getActualTime() {
  std::basic_stringstream<wchar_t> wss;
  wss.imbue(m_locale);

  wss << boost::posix_timemicrosec_clock::local_time();
  return wss.str();
}
Örnek
Şöyle yaparız.
std::stringstream stream;
std::string facetStr = "%Y/%m/%d %H:%M";

stream.imbue(std::locale(std::locale::classic(),
  new boost::posix_time::time_facet(facetStr.c_str())));
3. Stream'e yazma işlemi yapılır
Örnek
Şöyle yaparız.
int main() {
    std::wcout << getActualTime();
}
Örnek
Elimizde bir ptime olsun.
boost::posix_time::ptime m_time = ...;
Şöyle yaparız.
std::stringstream stream;
std::string facetStr = "%Y/%m/%d %H:%M";

stream.imbue(std::locale(std::locale::classic(),
  new boost::posix_time::time_facet(facetStr.c_str())));
stream << m_time;
Örnek
Şöyle yaparız.
std::string example_datetime(const std::string &boostspec)
{
  std::ostringstream os;
  os.imbue(std::locale(std::locale::classic(),
    new boost::posix_time::time_facet(boostspec.c_str())));
  os << boost::posix_time::time_from_string("2014-02-13 08:30:00.000");
  return os.fail() ? "invalid specifier" : os.str();
}
Çağırmak için şöyle yaparız.
std::cout << example_datetime("%a % %") << std::endl;
std::cout << example_datetime("“%a % %”") << std::endl;
Çıktı olarak şunu alırız.
Thu % 
Thu % %”

Hiç yorum yok:

Yorum Gönder