26 Mart 2018 Pazartesi

date_time gregorian::date Sınıfı

date Sınıfı
Giriş
Şu satırı dahil ederiz.
#include <boost/date_time/gregorian/gregorian_types.hpp>
#include <boost/date_time/gregorian/gregorian.hpp>
Açıklaması şöyle
The implemented calendar is a "proleptic Gregorian calendar" which extends dates back prior to the Gregorian Calendar's first adoption in 1582. The current implementation supports dates in the range 1400-Jan-01 to 9999-Dec-31. Many references will represent dates prior to 1582 using the Julian Calendar, so caution is in order if accurate calculations are required on historic dates. See Calendrical Calculations by Reingold & Dershowitz for more details. Date information from Calendrical Calculations has been used to cross-test the correctness of the Gregorian calendar implementation.
Sadece date,month, year alanlarına sahiptir. Açıklaması şöyle
"Internally boost::gregorian::date is stored as a 32 bit integer type."
Constuctor - default
Şöyle yaparız. Epoch'u temsil eder.
boost::gregorian::date d;
Constructor - year + month + date
Şöyle yaparız.
boost::gregorian::date d1(1500, 6, 1);
boost::gregorian::date d2(4500, 6, 1);
Şöyle yaparız.
const boost::gregorian::date dt{2018, 9, 14};
Constructor - clock
Şöyle yaparız.
boost::gregorian::date d (boost::gregorian::day_clock::local_day());
Copy Constructor 
Şöyle yaparız.
boost::gregorian::date d = boost::gregorian::date_from_iso_string( "20161101");
Şöyle yaparız.
boost::gregorian::date d = second_clock::local_time().date();
day metodu
Şöyle yaparız.
short day = static_cast<short>(d.day())
julian_day metodu
Şöyle yaparız.
boost::posix_time::ptime p = ...;
int julianDay = p.date().julian_day();
month metodu
Şöyle yaparız.
short month = static_cast<short>(d.month())
year metodu
Şöyle yaparız.
int year = d.year();
Free Style Metodlar
date_from_tm metodu
Örnek ver

date_from_iso_string metodu
Şöyle yaparız. Eğer farklı bir format kullanmak istersek boost::gregorian::date_input_facet Sınıfı kullanılabilir.
boost::gregorian::date d = boost::gregorian::date_from_iso_string ("20161101");
from_simple_string metodu
from_simple_string metodu yazısına taşıdım.

operator + metodu - date_duration
date_duration days olarak düşünülmeli. date + 2 gün yapabiliriz. Şöyle yaparız.
date d = day_clock::local_day(),
date prev = d - months(1),
date next = d + months(1);

std::cout << "Today is: " << to_simple_string(d)  << ".\n"
  << "One month before today was: " << to_simple_string(prev) << "\n"
  << "One month from today will be: "    << to_simple_string(next) << "\n";
Çıktı olarak şunu alırız.
Today is: 2017-Mar-23.
One month before today was: 2017-Feb-23
One month from today will be: 2017-Apr-23
operator + metodu - date_duration
Tarihe yıl eklemek için şöyle yaparız.
boost::gregorian::date d1(2017, 6, 1);

const auto duration = boost::gregorian::years(3);
std::cout << d1 << " + " << duration.number_of_years() << "Y\n";
const auto d3 = d1 + duration;
operator - metodu - date_duration
date_duration days olarak düşünülmeli. Tarihten- 2 gün çıkarmak için şöyle yaparız.
date_duration days(2);
date d2 = d - days;
operator - metodu - date
Şöyle yaparız.
using boost::gregorian::date;
date a(1712, 1, 1);
date b(1713, 1, 1);

std::cout << (b - a).days() << "\n"; // 366, includes 30th February 1712
operator >> - stream'den okur
Şöyle yaparız.
std::istringstream stream = ...;
boost::gregorian::date d;
stream >> d;
operator << - stream'e yazar
Değeri atanmış bir nesneyi stream'e yazar. Şöyle yaparız.
boost::gregorian::date d = ...; 

std::ostringstream stream;
stream << d;
Şöyle yaparız.
boost::gregorian::date d = ...; 
std::cout << d;
Çıktı olarak şunu alırız.
2016-Nov-01
to_iso_string metodu
Şöyle yaparız. Eğer farklı bir format kullanmak istersek boost::gregorian::date_facet Sınıfı kullanılabilir.
boost::gregorian::date& d = ...
std::string yyyymmdd = boost::gregorian::to_iso_string (d);

to_simple_string metodu
to_simple_string metodu yazısına taşıdım.

Hiç yorum yok:

Yorum Gönder