![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Boost.Locale: Working with dates, times, timezones and calendars.Boost , ,
Working with dates, times, timezones and calendars. IntroductionВ стандартных библиотеках C, C++ и Boost есть несколько важных недостатков, которые обрабатывают даты и время:
Повышаю. Локальный предоставляет дженерикДата_времяикалендарныеклассы, позволяющие выполнять операции по датам и времени для негрегорианских календарей, таких как иврит, исламский, японский и другие. Не основанные на ИКУ бэкэндыподдерживают только григорианский календарь. В отличие от< Handling Dates and Time
Например: using namespace boost::locale;
date_time now; // Create date_time class with default calendar initialized to current time
date_time tomorrow = now + period::day();
cout << "Let's meet tomorrow at " << as::date << tomorrow << endl;
// Set some_point's date to 1995-Jan-1.
Вы можете рассчитать разницу между датами, разделив разницу на период: date_time now;
cout << " There are " << (now + 2 * period::month() - now) / period::day() << " days "
Вы также можете использовать другой синтаксис (меньше перегрузки оператора). date_time now;
cout << " There are " << period::day(now + period::month(2) - now) << " days "
date_time– обеспечивает функции участникаминимальныеимаксимальныедля получения информации о наименьших и наибольших возможных значениях определенного периода для конкретного времени. Например, для февраля<
Мы рекомендуем вам посмотреть на пример< Для преобразования между различными календарными датами вы можете получить текущее время POSIX с помощью функции членавремени. Например: 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.UTF-8@calendar=hebrew");
std::locale l_gregorian=gen("en_US.UTF-8");
// Create a Gregorian date from fields
// 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;
Не основанные на ICU бэкэнды поддерживают тот же диапазон времени даты, что и функции библиотеки<
Time ZoneЧасовой пояс текущей операционной системы используется по умолчанию, однако часовой пояс может быть изменен на нескольких различных уровнях:
Не основанные на ИКУ бэкэндыподдерживают только два вида часовых поясов:
I/O Operations on date_time objectsНаписаниедата_времяэквивалентно:
Например, этот код: Будет печатать в формате по умолчанию, что-то вроде: 2/3/2011 12:00 am Однако если вам нужно изменить поведение по умолчанию (например, показать только дату), то вам нужно использовать специальный манипулятор iostream для отображения текущей даты или времени, он будет переопределять форматирование по умолчанию. Например, Распечатал бы что-то вроде: 2/3/2011 Важно помнить, что< Questions and AnswersПочему я должен использовать Boost? Локальный над Ростом. Когда нужен только григорианский календарь?
Почему бы вам не использовать Boost? Поддержка часового пояса? Повышаю. Поддержка часового пояса DateTime нарушена. Часовые пояса не могут быть представлены простой таблицей правил, где летнее время зависит только от определенного дня недели в месяце. Время экономии дневного света может варьироваться в зависимости от года, политических вопросов и многих других вещей. Большинство современных операционных систем (Linux, *BSD, Mac OS X, OpenVMS) и многие важные пакеты программного обеспечения (ICU, Java, Python) используют так называемую базу данных Olson, чтобы правильно обрабатывать время дневного света. Если вам нужна полная поддержка базы данных часового пояса, вы должны использовать библиотеку ICU. Статья Boost.Locale: Working with dates, times, timezones and calendars. раздела может быть полезна для разработчиков на c++ и boost. Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: ::
|
||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |