Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Class template tz_db_base

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Library Reference

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Class template tz_db_base

boost::date_time::tz_db_base — Creates a database of time_zones from csv datafile.

Synopsis

// In header: <boost/date_time/tz_db_base.hpp>
template<typename time_zone_type, typename rule_type> 
class tz_db_base {
public:
  // types
  typedef char                                                           char_type;             
  typedef time_zone_type::base_type                                      time_zone_base_type;   
  typedef time_zone_type::time_duration_type                             time_duration_type;    
  typedef time_zone_names_base< char_type >                              time_zone_names;       
  typedef boost::date_time::dst_adjustment_offsets< time_duration_type > dst_adjustment_offsets;
  typedef std::basic_string< char_type >                                 string_type;           
  // construct/copy/destruct
  tz_db_base();
  // public member functions
  void load_from_stream(std::istream &);
  void load_from_file(const std::string &);
  bool add_record(const string_type &, 
                  boost::shared_ptr< time_zone_base_type >);
  boost::shared_ptr< time_zone_base_type > 
  time_zone_from_region(const string_type &) const;
  std::vector< std::string > region_list() const;
  // private member functions
  rule_type * parse_rules(const string_type &, const string_type &) const;
  week_num get_week_num(int) const;
  void split_rule_spec(int &, int &, int &, string_type) const;
  bool parse_string(string_type &);
};

Description

Файл csv, содержащий спецификации зоны, используемыеtz_db_base, предназначен для настройки пользователем библиотеки. При настройке этого файла (или создании собственного) файл должен следовать определенному формату.

Предполагается, что эта первая строка содержит заголовки колонок и поэтому не обрабатывается базойtz_db_.

Каждая запись (линия) должна иметь одиннадцать полей. Некоторые из них могут быть пустыми. Каждое поле (даже пустое) должно быть заключено в двойные цитаты. Экс:

"America/Phoenix" <- string enclosed in quotes
""                <- empty field

Некоторые поля представляют собой промежуток времени. Формат этих полей должен быть:

"{+|-}hh:mm[:ss]" <- length-of-time format

где плюс или минус является обязательным, а секунды необязательными.

Поскольку некоторые часовые пояса не используют экономию дневного света, не всегда необходимо, чтобы каждое поле в спецификации зоны содержало значение. Все спецификации Zone_specs должны иметь смещение по меньшей мере ID и GMT. Зоны, которые используют экономию дневного света, должны иметь все поля, за исключением: STD ABBR, STD NAME, DST NAME. Обратите внимание, что DST ABBR является обязательным для зон, которые используют экономию дневного света (см. описание поля для более подробной информации).

********** Поля и их описание/детали *********

ID: содержит идентифицирующую строку для Zone_spec. Любая струна будет работать, пока она уникальна. Нет двух одинаковых идентификаторов.

STD ABBR: STD имя: DST ABBR: DST имя: Все эти четыре названия и аббревиатуры используются для описания часового пояса. В то время как любая струна будет делать в этих областях, следует соблюдать осторожность. Эти поля содержат строки, которые будут использоваться на выходе многих классов local_time. Экс:

time_zone nyc = tz_db.time_zone_from_region("America/New_York");
local_time ny_time(date(2004, Aug, 30), IS_DST, nyc);
cout << ny_time.to_long_string() << endl;
// 2004-Aug-30 00:00:00 Eastern Daylight Time
cout << ny_time.to_short_string() << endl;
// 2004-Aug-30 00:00:00 EDT

ПРИМЕЧАНИЕ: Точные названия формата/функции могут различаться - см. документацию по местному времени для более подробной информации.

Смещение GMT: Это количество часов, добавленных в utc, чтобы получить местное время до внесения каких-либо корректировок экономии дневного света. Примеры: Америка / Нью-Йорк смещения -5 часов; Африка / Каир смещения +2 часа. Формат должен соответствовать формату продолжительности времени, описанному выше.

Корректировка DST: Количество времени, добавленное к gmt_offset, когда экономия дневного света в силе. Формат должен соответствовать формату продолжительности времени, описанному выше.

ДСТ Начинать Правило даты: Это специально отформатированная строка, описывающая день года, в который происходит переход. Он содержит три собственных поля, разделенных полуколонами. Первое поле обозначает «девятый» будний день месяца. Возможные значения: 1 (первый), 2 (второй), 3 (третий), 4 (четвертый), 5 (пятый) и -1 (последний). Второе поле указывает день недели от 0 до 6 (солнце = 0). Третье поле указывает месяц от 1-12 (Ян=1).

Примеры: «-1;5;9» = «Последняя пятница сентября», «2;1;3» = «Второй понедельник марта»

Время начала: Время начала - это количество часов после полуночи, в день стартового перехода, переход происходит. Проще говоря, время суток перехода выполнено (в формате 24 часа). Формат должен соответствовать описанному выше формату длительности времени, за исключением того, что он всегда должен быть положительным.

ДСТ Правило конечной даты: см. DST Правило даты начала. Разница здесь заключается в том, что заканчивается экономия дневного света (переход на ЗППП).

Время окончания: так же, как и время начала.

tz_db_base public construct/copy/destruct

  1. <
    tz_db_base();
    >Построение пустой базы данных.

tz_db_base public member functions

  1. <
    voidload_from_stream(std::istream&in);
    >Процесс csv файла данных, может выбросить исключения.

    Майский бросок<bad_field_count>Исключения

  2. <
    voidload_from_file(conststd::string&pathspec);
    >Обработка csv файла данных может привести к исключению.

    Может ли<data_not_accessible>или<bad_field_count>исключения

  3. <
    booladd_record(conststring_type&region,
                   boost::shared_ptr<time_zone_base_type>tz);
    >возвращает истинное, если запись успешно добавлена на карту

    Принимает название региона в виде «Америка/Феникс», и объект временной зоны для этого региона. Строка id должна быть уникальным именем, которого нет в базе данных.

  4. <
    boost::shared_ptr<time_zone_base_type>
    time_zone_from_region(conststring_type&region)const;
    >Возвращает объект зоны времени, построенный из спецификаций для данного региона.

    Возвращает объект зоны времени, построенный из спецификаций для данного региона. Если в регионе не существует локального времени::record_not_found исключение будет брошено

  5. <
    std::vector<std::string>region_list()const;
    >Возвращает вектор строк, удерживающих области часового пояса в базе данных.

tz_db_base private member functions

  1. <
    rule_type*parse_rules(conststring_type&sr,conststring_type&er)const;
    >Учет спецификаций правил переходного дня
  2. <
    week_numget_week_num(intnth)const;
    >функция помощника для parse_rules()
  3. <
    voidsplit_rule_spec(int&nth,int&d,int&m,string_typerule)const;
    >делит строку [start |end]_date_rule на 3 ints
  4. <
    boolparse_string(string_type&s);
    >Возьмите строку из csv, превратите ее в тип time_zone_type.

    Возьмите строку из csv, превратите ее в тип временной зоны и добавьте ее на карту. Предполагается, что в файле csv Zone_specs будет одиннадцать полей, описывающих часовой пояс. Возвращается, если Zone_spec успешно добавлен в базу данных


PrevUpHomeNext

Статья Class template tz_db_base раздела The Boost C++ Libraries BoostBook Documentation Subset Library Reference может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Library Reference ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 02:07:15/0.0051069259643555/0