![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Chapter 10. Boost.Date_TimeBoost , The Boost C++ Libraries BoostBook Documentation Subset , Part I. The Boost C++ Libraries (BoostBook Subset)
|
http://www.crystalclearsoftware.com/libraries/date_time/date_time.pdf |
Кроме того, полная ссылка на доксиген можно найти по адресу:
http://www.crystalclearsoftware.com/libraries/date_time/ref_guide/?tid=110 |
Наиболее актуальный вариант документации можно найти по адресу:
http://www.crystalclearsoftware.com/libraries/date_time/?tid=110 |
Мотивация для этой библиотеки исходит от работы с несколькими библиотеками с датой и помощи в создании нескольких проектов. Библиотеки времени обеспечивают фундаментальную инфраструктуру для большинства проектов развития. Однако большинство из них имеют ограничения в своей способности вычислять, форматировать, конвертировать или выполнять некоторые другие функции. Например, большинство библиотек не правильно обрабатывает високосные секунды, предоставляют такие понятия, как бесконечность, или предоставляют возможность использовать источники высокого разрешения или сетевого времени. Эти библиотеки также имеют тенденцию быть жесткими в представлении дат и времен. Таким образом, индивидуальные политики для проекта или подпроекта невозможны.
Программирование с датами и временем должно быть почти таким же простым и естественным, как программирование с строками и целых чисел. Приложения с большим количеством временной логики могут быть радикально упрощены, имея надежный набор операторов и возможности расчета. Занятия должны обеспечивать способность сравнивать даты и время, добавлять длины или продолжительность времени, извлекать даты и время из часов и работать естественно с интервалами даты и времени.
Другой мотивацией для развития библиотеки было применение современных методов проектирования библиотеки C++ к домену времени. Действительно построить рамки для строительства временных типов. Например, путем предоставления итераторов и классов признаков для контроля основных свойств библиотеки. Авторам известно, что эта библиотека является единственной существенной попыткой применить современный C++ к библиотеке времени.
Домен времени даты богат терминологией и проблемами. Ниже приводится краткое введение к концепциям, которые вы найдете отраженными в библиотеке.
Библиотека поддерживает 3 основных временных типа:
Каждый из этих временных типов имеет Резолюция, которая определяется наименьшей репрезентативной продолжительностью. Система Time предоставляет все эти категории временных типов, а также правила для маркировки и расчета с точками времени. Calendar Systems - это просто временные системы с максимальным разрешением одного дня. Система Gregorian является наиболее широко используемой календарной системой сегодня (система ISO в основном производная от этого). Тем не менее, есть много других календарных систем. UTC (Coordinated Universal Time) - широко используемая система гражданского времени. UTC корректируется для вращения Земли при долготе 0 с использованием високосных секунд (Это не предсказуемо, только при необходимости). Большинство систем местное время основаны на UTC, но также корректируются для вращения Земли, так что дневные часы везде похожи. Кроме того, некоторые местные времена включают дневное время экономии (DST) корректировки для смены дневных часов в течение лета.
Clock Device - это программный компонент (приложенный к определенному оборудованию), который обеспечивает текущую дату или время в отношении системы времени. Часы могут измерить текущее время до известной резолюции, которая может быть выше или ниже, чем определенное время представления.
Библиотека предоставляет поддержку для расчета с датами и временем. Тем не менее, временные вычисления не совсем то же самое, что вычисления с целых чисел. Если вы серьезно относитесь к точности ваших временных расчетов, необходимо прочитать около Стабильность, предсказуемость и приближения.
Большая часть генезиса этой библиотеки заключается в наблюдении за тем, что несколько библиотек времени построены таким образом, который позволяет настроить и расширить. Типичный пример, календарная логика встроена непосредственно в класс даты. Или функции поиска часов встроены непосредственно в класс времени. Эти дизайнерские решения обычно делают невозможным расширение или изменение поведения библиотеки. На более фундаментальном уровне обычно есть предположения о разрешении представления времени или григорианский календарь.
Часто результат заключается в том, что проект должен решиться на менее чем полную библиотеку из-за требования высокого разрешения времени представления или других предположений, которые не соответствуют реализации библиотеки. Это очень печально, потому что развитие библиотеки такого рода - далеко не тривиальная задача.
Хотя дизайн далек от совершенства, текущий дизайн гораздо более гибок, чем любая библиотека времени, о которой автор знает. Ожидается, что различные аспекты расширяемости будут лучше документированы в будущих версиях. Информация о проектных целях библиотеки sumа здесь.
Статья Chapter 10. Boost.Date_Time раздела The Boost C++ Libraries BoostBook Documentation Subset Part I. The Boost C++ Libraries (BoostBook Subset) может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Part I. The Boost C++ Libraries (BoostBook Subset) ::
реклама |