Библиотека boost::date_time совместима с библиотекой boost::serialization и xml-архивами. Список классов, которые можно сериализовать:
boost::gregorian
boost::posix_time
Для создания библиотеки date_time не требуется никаких дополнительных шагов.
ПРИМЕЧАНИЕ: в связи с изменением интерфейса библиотеки сериализации теперь требуется, чтобы все потоковые объекты были константными до записи в архив. Для этого допускается следующая функция шаблона (и используется в тестах date_time). В это время не требуется никаких специальных шагов для чтения из архива.
template<class archive_type, class temporal_type>
void save_to(archive_type& ar, const temporal_type& tt)
{
ar << tt;
}
Пример использования text_archive:
using namespace boost::posix_time;
using namespace boost::gregorian;
ptime pt(date(2002, Feb, 14)), hours(10)), pt2(not_a_date_time);
std::ofstream ofs("tmp_file");
archive::test_oarchive oa(ofs);
save_to(oa, pt); // NOTE: no macro
ofs.close();
std::ifstream ifs("tmp_file");
archive::text_iarchive ia(ifs);
ia >> pt2; // NOTE: no macro
ifs.close();
pt == pt2; // true
Пример использования xml_archive:
using namespace boost::gregorian;
date d(2002, Feb, 14), d2(not_a_date_time);
std::ofstream ofs("tmp_file");
archive::xml_oarchive oa(ofs);
save_to(oa, BOOST_SERIALIZATION_NVP(d)); // macro required for xml_archive
ofs.close();
std::ifstream ifs("tmp_file");
archive::xml_iarchive ia(ifs);
ia >> BOOST_SERIALIZATION_NVP(d2); // macro required for xml_archive
ifs.close();
d == d2; // true
Для использования кода сериализации date_time должны быть явно включены соответствующие файлы заголовка. Файлы заголовков:
boost/date_time/gregorian/greg_serialize.hpp
и
boost/date_time/posix_time/time_serialize.hpp