День добрый!
Понадобилось мне в проекте конвертировать даты из арабского летосчисления в григорианский (в наше то есть).
Нашел библиотеку Boost.Locale, посмотрел примеры использования и понял, это то что мне надо!
Скачал последнюю версию буста и этой либы.
Скачал ICU и собрал у себя на машине из исходников.
Скомпилировал Boost.Locale.
Все прошло замечательно, никто не ругался.
Написал тестовый пример:
using namespace boost::locale;
using namespace boost::locale::period;
generator gen;
// Create locales with Hebrew and Gregorian (default) calendars.
std::locale l_hebrew=gen("en_US@calendar=hebrew");
std::locale l_gregorian=gen("en_US");
// Create a Gregorian date from fields
date_time greg(2010*year + february + 5*day,l_gregorian);
// Assign a time point taken from the Gregorian date to date_time with
// the Hebrew calendar
date_time heb(greg.time(),l_hebrew);
// Now we can query the year.
std::cout << "Hebrew year is " << heb/ year << std::endl;
date_time now(time(0),l_hebrew);
std::cout << "Year:" << now / period::year <<" Full Date:"<< as::date << now;
Вернее как написал, стянул из документации.
Вывод я ожидал примерно такой:
Hebrew year is 5771
Year:5771 Full Date: 5771 Veadar 25
вместо этого получил
Hebrew year is 2010
Year:2010 Full Date:1.30157e+009
Что навело меня на мысль, что чтото тут не так.
Кто работал, сталкивался с этой либой, подскажите в чем проблема!?!
Заранее большое спасибо!