11 Ekim 2017 Çarşamba

date_time posix_time::time_input_facet Sınıfı

Giriş
Şu satırı dahil ederiz.
#include <boost/date_time/posix_time/posix_time.hpp>
ptime sınıfını stream'den okumak için kullanılır.

Constructor
Örnek
Şöyle yaparız.
ptime ptimedate;
std::istringstream is = ...;
is.imbue(std::locale(std::locale::classic(),
  new boost::posix_time::time_input_facet("...")));
is >> ptimedate;
Örnek
Şöyle yaparız.
int toJulian(std::string date)
{
  std::locale loc = std::locale(std::locale::classic(),
    new boost::posix_time::time_input_facet("%d-%b-%Y"));
  std::istringstream ss(date);
  ss.imbue(loc);
  boost::posix_time::ptime p;
  ss >> p;
  return p.date().julian_day();
}
Örnek
Şu kod saniye 63 olmasına rağmen hata vermiyor. Yani hatayı yuvarlayarak farklı bir sonuç veriyor.
std::string str = "2017-01-31T02:15:63Z";
std::string format = "%Y-%m-%dT%H:%M:%SZ";

boost::posix_time::time_input_facet *facet = new boost::posix_time::time_input_facet(
  format);

std::stringstream ss(str);
ss.imbue(std::locale(std::locale::classic(), facet));

boost::posix_time::ptime pt;
ss>> pt;
if (ss.fail())
{
  std::cout << "Failure" << std::endl;
}
std::cout << pt << std::endl;
Çıktı olarak şunu alırız.
2017-Jan-31 02:16:03


Hiç yorum yok:

Yorum Gönder