![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Date Time Input/OutputBoost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 10. Boost.Date_Time
|
Format Specifier | Description |
---|---|
Example | |
%a |
Сокращенное название дня недели |
«Мон» =>Понедельник | |
%A |
Длинный день недели |
«Понедельник» | |
%b |
Сокращенное название дня недели |
«Февраль» =>Февраль | |
%B |
Полное имя месяца |
«Февраль» | |
%c ! |
Предпочтительное представление даты и времени для текущего местоположения. |
%C !# |
Число века (год/100) как 2-значное целое число. |
%d |
День месяца как десятичный от 01 до 31 |
%D !# |
эквивалентно %m/%d/%y |
%e # |
Как и %, день месяца как десятичное число, но ведущий ноль заменяется пространством. |
%G ! |
Это имеет тот же формат и значение, что и %y, за исключением того, что если номер недели ISO принадлежит предыдущему или следующему году, этот год используется вместо этого. |
%g ! |
Как %G, но без века. |
%h !# |
эквивалентно %b |
%j |
День года как десятичный от 001 до 366 високосных лет, 001 - 365 високосных лет. |
«060» =>29 февраля | |
%m |
Название месяца как десятичная цифра 01-12 |
«01» =>январь | |
%u ! |
День недели как десятичный, диапазон от 1 до 7, понедельник 1. |
%U |
Число недели текущего года как десятичное число, колеблется от 00 до 53, начиная с первого воскресенья как первого дня недели 01. В 2005 году 1 января приходится на субботу, поэтому она приходится на неделю 00 2005 года (неделя 00 охватывает 2004-26 декабря - 2005-01 января). Это произошло на 53-й неделе 2004 года. |
дата d(2005, январь, 1); // Суббота // с форматом %U ss< | |
%V !# |
ISO 8601:1988 номер недели текущего года как десятичное число, диапазон от 01 до 53, где неделя 1 - первая неделя, которая имеет по крайней мере 4 дня в текущем году, и с понедельником как первый день недели. |
%w |
День недели как десятичное число от 0 до 6 |
«0» =>Воскресенье | |
%W |
Номер недели от 00 до 53, где понедельник - первый день недели 1 |
дата d(2005, январь, 2); // воскресенье // с форматом %W ss< | |
%x |
Внедрение определенного формата даты из локализации. |
date d(2005,Oct,31); date_facet* f = new date_facet("%x"); locale loc = locale(locale("en_US"), f); cout.imbue(loc); cout< | |
%y |
Двухзначный год |
"05" =>2005 | |
%Y |
Четырехзначный год |
"2005" | |
%Y-%b-%d |
Формат даты по умолчанию |
"2005-Апрель-01" | |
%Y%m%d |
Формат ISO |
"20050401" | |
%Y-%m-%d |
Расширенный формат ISO |
"2005-04-01" |
Format Specifier | Description |
---|---|
Example | |
%- *! |
Для обозначения длительности. Отображается только тогда, когда продолжительность отрицательная. |
"-13:15:16" | |
%+ *! |
Для обозначения длительности. Всегда показывает как положительные, так и отрицательные. |
"+13:15:16" | |
%f |
Фракционные секунды используются всегда, даже если их значение равно нулю. |
"13:15:16.000000" | |
%F * |
Фракционные секунды используются только тогда, когда их значение не равно нулю. |
"13:15:16" "05:04:03.001234" | |
%H |
Час как десятичное число с использованием 24-часовых часов (диапазон от 00 до 23). |
#160; | |
%I ! |
Час как десятичное число с использованием 12-часовых часов (диапазон от 01 до 12). |
#160; | |
%k ! |
Час (24-часовые часы) как десятичное число (диапазон от 0 до 23); однозначным цифрам предшествует пустой. |
#160; | |
%l ! |
Час (12 часов) как десятичное число (диапазон от 1 до 12); однозначным цифрам предшествует пустой. |
#160; | |
%M |
Минута как десятичное число (диапазон от 00 до 59). |
#160; | |
%O |
Число часов во временной продолжительности как десятичное число (диапазон от 0 до max. представимая продолжительность); однозначным цифрам предшествует ноль. |
#160; | |
%p ! |
Либо "AM", либо "PM" в соответствии с заданным временным значением, либо соответствующие строки для текущего местоположения. |
#160; | |
%P !# |
Как %p, но в нижнем регистре: «am» или «pm» или соответствующая строка для текущего местоположения. |
#160; | |
%r !# |
Время в a.m. или p.m. В местоположении POSIX это эквивалентно '%I:%M:%S%p " |
#160; | |
%R ! |
Время в 24-часовой записи (%H:%M) |
#160; | |
%s * |
Секунды с дробными секундами. |
"59.000000" | |
%S |
Только секунды |
"59" | |
%T ! |
Время в 24-часовой записи (%H:%M:%S) |
#160; | |
%q |
часовой пояс ISO (только выход). Этот флаг игнорируется при использовании time_facet с ptime. |
"-0700" // Горное стандартное время | |
%Q |
Расширенный часовой пояс ISO (только выход). Этот флаг игнорируется при использовании time_facet с ptime. |
"-05:00" // Восточное стандартное время | |
%z *! |
Сокращенный часовой пояс (только выход). Этот флаг игнорируется при использовании time_facet с ptime. |
«MST» // Горное стандартное время | |
%Z *! |
Полное название часового пояса (только выход). Этот флаг игнорируется при использовании time_facet с ptime. |
«ЭДТ» // Восточное светлое время | |
%ZP * |
строка часового пояса Posix (доступна как для ввода, так и для вывода). Этот флаг игнорируется при использовании time_facet с ptime. Полную информацию о строках часового пояса posix см. вposix_time_zone class. |
"EST-05EDT+01,M4.1.0/02:00,M10.5.0/02:00" | |
%x %X |
Внедрение определенного формата даты/времени из локализации. |
Дата d(2005,Oct,31); ptime pt(d, hours(20)); time_facet* f = new time_facet("%x%X"); locale loc = locale("en_US"), f); cout.imbue(loc); cout<< pt. "10/31/2005 08:00:00 PM" loc = locale(locale("de_DE"), f); cout.imbue(loc); cout<< pt; // "31.10.2005 20:00:00" | |
%Y%m%dT%H%M%S%F%q |
Формат ISO |
"20051015T131211-0700" // 15 октября 2005 13:12:11 MST | |
%Y-%m-%d %H:%M:%S%F%Q |
Расширенный формат ISO |
"2005-10-15 13:12:11-07:00" | |
%Y-%b-%d %H:%M:%S%F %z |
Формат по умолчанию используется при выводе ptime и local_date_time. |
«2005-Окт-15 13:12:11 MST» | |
%Y-%b-%d %H:%M:%S%F %ZP |
Формат по умолчанию используется при вводе ptime и local_date_time. |
«2005-Окт-15 13:12:11 MST-07» | |
%-%H:%M:%S%F ! |
Формат Default time_duration для вывода. Знак будет отображаться только в течение отрицательных периодов. |
"-13:14:15.003400" | |
%H:%M:%S%F |
Формат по умолчанию time_duration для ввода. |
«13:14:15.003400» |
* Флаги с уникальным поведениемdate_time
.
# Флаги, которые имеют зависимое от платформы поведение. Их не везде можно поддержать.
! Флаги, которые в настоящее время не работают для ввода.
В следующей таблице перечислены имеющиеся аспекты.
* Эти ссылки приводят к разделам ссылкиtime_facet
иtime_input_facet
. Это не реальные классы, а типизированные.
Для реализации новых граней i/o библиотека даты-времени использует ряд новых парсеров и форматировщиков. Эти классы доступны для пользователей, которые хотят реализовать специализированные процедуры ввода / вывода.
Output | Input |
---|---|
period_formatter |
period_parser |
date_generator_formatter |
date_generator_parser |
special_values_formatter |
special_values_parser |
#160; | format_date_parser |
Повышение::date_time::date_facet
позволяет пользователям иметь значительный контроль над потоковой передачей дат на выходе (и других григорианских объектов). Дата_facet типизирована вгригорианском
пространстве имен какдата_facet
иwdate_facet
.
Syntax | Description |
---|---|
Example | |
void format(char_type*) |
Установите формат для дат. |
date_facet* f = new date_facet(); f->format("%m %d %Y"); | |
void set_iso_format() |
Устанавливает формат даты для ISO |
f->set_iso_format(); // "%Y%m%d" | |
void set_iso_extended_format() |
Устанавливает формат даты ISO Extended |
f->set_iso_extended_format(); // "%Y-%m-%d" | |
void month_format(char_type*) |
Установите формат на месяцы, когда они «устанавливаются» индивидуально. |
f->month_format("%B"); ss<< greg_month(12); // "Декабрь" | |
void weekday_format(char_type*) |
Установите формат для будней, когда они «устанавливаются» индивидуально. |
f->weekday_format("%a"); ss<< greg_weekday(2); // "Tue" | |
void period_formatter(...) Parameter: period_formatter_type |
Заменяет объект форматировщика периода созданным пользователем. |
См.учебникдля полного примера. | |
void special_values_formatter(...) Parameter: special_values_formatter_type |
Заменяет объект форматирования special_values созданным пользователем. |
См.учебникдля полного примера. | |
void date_gen_phrase_strings(...) Parameters: input_collection_type date_gen_formatter_type:: phrase_elements |
Устанавливает новые строки фраз генератора дат в файле date_gen_formatter. Сбор данных представляет собой вектор строк (подробнее об этих строках см.документация форматировщика/парсера генератора дат). Параметр фразы_элементов — это число, определенное в объекте date_generator_formatter, которое имеет значение по умолчанию «первый». Используется для указания, каким будет положение первой строки в сборнике. |
void short_weekday_names(...) Parameter: input_collection_type |
Замените строки, используемые при «поставке» коротких будней. |
См.учебникдля полного примера. | |
void long_weekday_names(...) Parameter: input_collection_type |
Замените строки, используемые при «поставке» длинных будней. |
См.учебникдля полного примера. | |
void short_month_names(...) Parameter: input_collection_type |
Замените строки, используемые при «выделении» коротких месяцев. |
См.учебникдля полного примера. | |
void long_month_names(...) Parameter: input_collection_type |
Замените строки, используемые при «вытягивании» длинных месяцев. |
См.учебникдля полного примера. | |
OutItrT put(...) Common parameters for all 'put' functions: OutItrT ios_base char_type Unique parameter for 'put' funcs: gregorian object |
В файле date_facet 12 функций. Общими параэтерами являются: итератор, указывающий на следующий элемент в потоке, объект ios_base и персонаж заполнения. Каждый уникальный григорианский объект имеет свою собственную функцию. Каждая уникальная функция позиционирования описана ниже. |
OutItrT put(..., date) |
Помещает объект даты в поток, используя формат, установленный форматом или по умолчанию. |
OutItrT put(..., days) |
Помещает объект дня в поток в виде числа. |
OutItrT put(..., month) |
Помещает объект месяца в поток, используя формат, установленныйmonth_format(...) или по умолчанию. |
OutItrT put(..., day) |
Помещает объект дня месяца в поток в виде двухзначного числа. |
«01» // 1 января | |
OutItrT put(..., day_of_week) |
Помещает объект дня недели в поток с использованием формата, установленногоweekday_format(...) или по умолчанию. |
OutItrT put(..., date_period) |
Помещает дату_период в поток. Формат дат будет использовать формат, установленный форматом. или формат даты по умолчанию. Тип периода (открытый или закрытый диапазон) и используемые разграничители - это те, которые используются форматом period_formatter. |
OutItrT put(..., partial_date) |
Помещает в поток объект part_date date_generator. Используемый формат месяца устанавливаетсяmonth_format(..) или по умолчанию. День месяца представлен в виде двухзначного числа. |
"01 Ян" // форматы по умолчанию "01 Январь" // формат длинного месяца | |
OutItrT put(..., date_generator) Date Generator Type: nth_day_of_the_week_in_month |
Выберите nth_day_of_the_week_in_month объект в потоке. Формат месяца устанавливаетсяmonth_format(...) или по умолчанию. Формат будня устанавливаетсяweekday_format(...) или по умолчанию. Остальные элементы фразы установлены вdate_generator_formatter. |
«третий фри в мае» // дефолты | |
OutItrT put(..., date_generator) Date Generator Type: first_day_of_the_week_in_month |
Помещает первый_day_of_the_week_in_month объект в поток. Формат месяца устанавливаетсяmonth_format(...) или по умолчанию. Формат будня устанавливаетсяweekday_format(...) или по умолчанию. Остальные элементы фразы установлены вdate_generator_formatter. |
«Свадьба первого июня» // дефолты | |
OutItrT put(..., date_generator) Date Generator Type: last_day_of_the_week_in_month |
Помещает в поток объект Last_day_of_the_week_in_month. Формат месяца устанавливаетсяmonth_format(...) или по умолчанию. Формат будня устанавливаетсяweekday_format(...) или по умолчанию. Остальные элементы фразы установлены вdate_generator_formatter. |
«Последний Тю Мар» // дефолты | |
OutItrT put(..., date_generator) Date Generator Type: first_day_of_the_week_after |
Помещает первый_day_of_the_week_after объект в поток. Формат будня устанавливаетсяweekday_format(...) или по умолчанию. Остальные элементы фразы установлены вdate_generator_formatter. |
«Первый Сат после» // дефолты | |
OutItrT put(..., date_generator) Date Generator Type: first_day_of_the_week_before |
Помещает первый_день_недели_до объекта в поток. Формат будня устанавливаетсяweekday_format(...) или по умолчанию. Остальные элементы фразы установлены вdate_generator_formatter. |
«первый месяц до» // дефолты |
Повышение::date_time:::date_input_facet
позволяет пользователям иметь значительный контроль над тем, как даты (и другие грегорианские объекты) передаются в потоковом режиме. Дата_input_facet типизирована вгригорианском
пространстве имен какдата_input_facet
иwdate_input_facet
.
Syntax | Description |
---|---|
Example | |
void format(char_type*) |
Установите формат для дат. |
date_input_facet* f = new date_input_facet(); f->format("%m %d %Y"); | |
void set_iso_format() |
Устанавливает формат даты для ISO |
f->set_iso_format(); // "%Y%m%d" | |
void set_iso_extended_format() |
Устанавливает формат даты ISO Extended |
f->set_iso_extended_format(); // "%Y-%m-%d" | |
void month_format(char_type*) |
Установите формат при «получении» месяцев по отдельности. |
f->month_format("%B"); ss.str("March"); ss>>m; // March | |
void weekday_format(char_type*) |
Установите формат, когда «получаете» будни индивидуально. |
f->weekday_format("%a"); ss.str("Sun"); ss>>wd; // Sunday | |
void year_format(char_type*) |
Установите формат, когда «получите» годы по отдельности. |
f->weekday_format("%y"); ss.str("04"); ss>>год; // 2004 | |
void period_parser(...) Parameter: period_parser_type |
Заменяет объект парсера периода созданным пользователем. |
См.учебникдля полного примера. | |
void special_values_parser(...) Parameter: special_values_parser_type |
Заменяет объект парсера special_values созданным пользователем. |
См.учебникдля полного примера. | |
void date_gen_phrase_strings(...) Parameters: input_collection_type |
Устанавливает новые строки фраз генератора дат в date_gen_parser. Сбор данных представляет собой вектор строк (подробнее об этих строках см.документация форматировщика/парсера генератора дат). |
void short_weekday_names(...) Parameter: input_collection_type |
Замените строки, используемые при «получении» коротких будней. |
См.учебникдля полного примера. | |
void long_weekday_names(...) Parameter: input_collection_type |
Замените строки, используемые при «получении» длинных будней. |
См.учебникдля полного примера. | |
void short_month_names(...) Parameter: input_collection_type |
Замените строки, используемые при «получении» коротких месяцев. |
См.учебникдля полного примера. | |
void long_month_names(...) Parameter: input_collection_type |
Замените строки, используемые при «получении» длинных месяцев. |
См.учебникдля полного примера. | |
InItrT get(...) Common parameters for all 'get' functions: InItrT from InItrT to ios_base Unique parameter for 'get' funcs: gregorian object |
В файле date_input_facet 13 функций get. Общими параметрами являются: итератор, указывающий на начало потока, итератор, указывающий на конец потока, и объект ios_base. Каждый уникальный григорианский объект имеет свою собственную функцию. Каждая уникальная функция получения описана ниже. |
InItrT get(..., date) |
Получает объект даты из потока, используя формат, установленный форматом или по умолчанию. |
ss.str("2005-Jan-01"); ss>>d; // формат по умолчанию | |
InItrT get(..., month) |
Получает объект месяца из потока с помощью формата, установленногоmonth_format(...) или по умолчанию. |
ss.str("Feb"); ss>>m; // формат по умолчанию | |
InItrT get(..., day_of_week) |
Получает объект дня недели из потока с помощью формата, установленногоweekday_format(...) или по умолчанию. |
ss.str("Sun"); ss>>dow; // формат по умолчанию | |
InItrT get(..., day) |
Получает объект дня месяца из потока в виде двухзначного числа. |
«01» // 1 января | |
InItrT get(..., year) |
Получает годичный объект из потока в виде числа. Количество ожидаемых цифр зависит от формата года. |
ss/str("2005"); ss>>y; // формат по умолчанию | |
InItrT get(..., days) |
Получает объект дня из потока в виде числа. |
ss.str("356"); ss >>dys; // полный год | |
InItrT get(..., date_period) |
Получает дату_период из потока. Формат дат будет использовать формат, установленный форматом[..] или форматом даты по умолчанию. Тип периода (открытый или закрытый диапазон) и используемые разграничители - это те, которые используются периодом. |
См.учебникдля полного примера. | |
InItrT get(..., partial_date) |
Получает из потока объект part_date date_generator. Используемый формат месяца устанавливаетсяmonth_format(..) или по умолчанию. День месяца представлен в виде двухзначного числа. |
"01 Ян" // форматы по умолчанию "01 Январь" // формат длинного месяца | |
InItrT get(..., date_generator) Date Generator Type: nth_day_of_the_week_in_month |
Получить nth_day_of_the_week_in_month Объект из потока. Формат месяца устанавливаетсяmonth_format(...) или по умолчанию. Формат будня устанавливаетсяweekday_format(...) или по умолчанию. Остальные элементы фразы установлены вdate_generator_parser. |
«третий фри в мае» // дефолты | |
InItrT get(..., date_generator) Date Generator Type: first_day_of_the_week_in_month |
Получает первый_day_of_the_week_in_month объект из потока. Формат месяца устанавливаетсяmonth_format(...) или по умолчанию. Формат будня устанавливаетсяweekday_format(...) или по умолчанию. Остальные элементы фразы установлены вdate_generator_parser. |
«Свадьба первого июня» // дефолты | |
InItrT get(..., date_generator) Date Generator Type: last_day_of_the_week_in_month |
Получает из потока объект Last_day_of_the_week_in_month. Формат месяца устанавливаетсяmonth_format(...) или по умолчанию. Формат будня устанавливаетсяweekday_format(...) или по умолчанию. Остальные элементы фразы установлены вdate_generator_parser. |
«Последний Тю Мар» // дефолты | |
InItrT get(..., date_generator) Date Generator Type: first_day_of_the_week_after |
Получает первый _day_of_the_week_after объект из потока. Формат будня устанавливаетсяweekday_format(...) или по умолчанию. Остальные элементы фразы установлены вdate_generator_parser. |
«Первый Сат после» // дефолты | |
InItrT get(..., date_generator) Date Generator Type: first_day_of_the_week_before |
Получает первый_day_of_the_week_before объект из потока. Формат будня устанавливаетсяweekday_format(...) или по умолчанию. Остальные элементы фразы установлены вdate_generator_parser. |
«первый месяц до» // дефолты |
boost::date_time::time_facet
является расширениемboost::date_time::date_facet
. Time_facet типизирован в пространстве именposix_time
какtime_facet
иwtime_facet
. Он типизирован в пространстве именlocal_time
какlocal_time_facet
иwlocal_time_facet
.
Time_facet наследует все публичные методы date_facet. Поэтому методы date_facet здесь не перечислены. Вместо этого их можно найти, перейдя по ссылке.
Syntax | Description |
---|---|
Example | |
void time_duration_format(...) Parameter: char_type* |
Установите формат time_duration. Формат time_duration имеет возможность отображать знак длительности. Флаг«% +» всегда будет отображать знак.'%-' будет отображаться только в том случае, если знак отрицательный. В настоящее время символы «-» и «+» используются для обозначения знака. |
f->time_duration_format("%+%H:%M"); // только часы и минуты w/знак всегда отображал time_duration td1(3, 15, 56); time_duration td2(-12, 25, 32); ss<< td1; // "+03:15:56" ss<< td2; // "-12:25:56" | |
void set_iso_format() |
Устанавливает формат даты и времени для ISO. |
f->set_iso_format(); // "%Y%m%dT%H%M%S%F%q" | |
void set_iso_extended_format() |
Устанавливает формат даты и времени для расширения ISO |
f->set_iso_extended_format(); // «%Y-%m-%d %H:%M:%S%F%Q» | |
OutItrT put(...) Common parameters for all 'put' functions: OutItrT ios_base char_type Unique parameter for 'put' funcs: posix_time object |
В Time_facet есть 3 функции. Общие параметры: итератор, указывающий на следующий элемент в потоке, объект ios_base и символ заполнения. Каждый уникальный объект posix_time имеет свою собственную функцию. Каждая уникальная функция позиционирования описана ниже. |
OutItrT put(..., ptime) |
Помещает объект ptime в поток, используя формат, установленный форматом или по умолчанию. |
OutItrT put(..., time_duration) |
Помещает объект time_duration в поток, используя формат, установленныйtime_duration_format(...) или по умолчанию. |
OutItrT put(..., time_period) |
Введите временной период в поток. Формат дат и времени будет использовать формат, установленный форматом или форматом даты / времени по умолчанию. Тип периода (открытый или закрытый диапазон) и используемые разграничители используются форматом period_formatter. |
boost::date_time::time_input_facet
является расширениемdate_input_facet
. Он типизирован в бустере::posix_time
namespace какtime_input_facet
иwtime_input_facet
. Он типизирован в бустере::local_time
namespace какlocal_time_input_facet
иwlocal_time_input_facet
.
Time_input_facet наследует все общедоступные методы date_input_facet. Поэтому методы date_input_facet здесь не перечислены. Вместо этого их можно найти по ссылке.
Syntax | Description |
---|---|
Example | |
void set_iso_format() |
Устанавливает формат времени для ISO |
f->set_iso_format(); // "%Y%m%dT%H%M%S%F%q" "20051225T132536.789-0700" | |
void set_iso_extended_format() |
Устанавливает формат даты ISO Extended |
f>set_iso_extended_format(); // "%Y-%m-%d" %H:%M:%S%F %Q» «2005-12-25 13:25:36.789 -07:00» | |
void time_duration_format(...) Parameter: char_type* |
Установите формат time_duration. |
f->time_duration_format("%H:%M"); // только часы и минуты | |
InItrT get(...) Common parameters for all 'get' functions: InItrT from InItrT to ios_base Unique parameter for 'get' funcs: gregorian object |
Есть 3 функции получения в time_input_facet. Общими параметрами являются: итератор, указывающий на начало потока, итератор, указывающий на конец потока, и объект ios_base. Каждый уникальный григорианский объект имеет свою собственную функцию. Каждая уникальная функция получения описана ниже. |
InItrT get(..., ptime) |
Получает объект ptime из потока, используя формат, установленный форматом или по умолчанию. |
ss.str("2005-Jan-01 13:12:01"); ss >>pt; // формат по умолчанию | |
InItrT get(..., time_duration) |
Получает объект time_duration из потока, используя формат, заданныйtime_duration_format(...) или по умолчанию. |
ss.str("01:25:15.000123000"); ss>>td; // формат по умолчанию | |
InItrT get(..., time_period) |
Получает временной период из потока. Формат дат/времен будет использовать формат, установленный форматом или форматом даты и времени по умолчанию. Тип периода (открытый или закрытый диапазон) и используемые разграничители - это те, которые используются периодом. |
См.учебникдля полного примера. |
Period_formatter и period_parser обеспечивают единый интерфейс для ввода и вывода date_periods, time_periods и в будущем выпуске local_date_time_periods. Пользователь имеет контроль над разграничителями, форматами компонентов даты/времени и формой периода. Формат компонентов даты/времени контролируется через элементы ввода и вывода даты_времени.
Периоды строятся с открытыми параметрами. Первое значение является отправной точкой и включается в период. Конечное значение не включается, но сразу следует за последним значением: [начало/конец]. Тем не менее, период можно транслировать как открытый диапазон или закрытый диапазон.
[2003-Jan-01/2003-Dec-31] <-- period holding 365 days [2003-Jan-01/2004-Jan-01) <-- period holding 365 days
Есть четыре разграничителя. Значения по умолчанию являются
"\" - разделитель |
"[] - стартовый делимитер |
") - конечный разграничитель открытого диапазона |
"] - конечный делимитер замкнутого диапазона |
Пользователь может предоставить пользовательский набор разграничителей. Пользовательские разграничители могут содержать пробелы.
Форма периода и разграничители могут быть установлены в качестве параметров конструкции или с помощью функций аксессуара. Пользовательский парсер / формататор периода может затем использоваться в качестве параметра конструкции для нового аспекта или может быть установлен в существующем аспекте с помощью функции доступа.
Period Formatter Doxygen Reference
and here: Period Parser Doxygen Reference
Syntax | Description |
---|---|
period_formatter(...) Parameters: range_display_options char_type* char_type* char_type* char_type* |
Все пять параметров конструкции имеют значения по умолчанию, поэтому этот конструктор также удваивается как конструктор по умолчанию.range_display_options является публичным номером типаperiod_formatter класса. Возможные варианты: AS_ OPEN_RANGE или AS_ Закрытый гнев. Закрытый диапазон — это по умолчанию. Период имеет три важных момента: начало, последний и конец. Закрытый период диапазона принимает форму [начало, конец], где период открытого диапазона принимает форму [начало, конец]. Четыре параметра char_type*: разделитель периода, начальный делимитер, конечный делимитер открытого диапазона и конечный делимитер закрытого диапазона. |
Syntax | Description |
---|---|
Example | |
range_display_options range_option() |
Возвращает текущую настройку для дисплея диапазона (либо AS_OPEN_RANGE, либо AS_CLOSED_RANGE). |
void range_option(...) Parameter: range_display_options |
Устанавливает опцию отображения диапазона (либо AS_OPEN_RANGE, либо AS_CLOSED_RANGE). |
void delimiter_strings(...) Parameters: string_type string_type string_type string_type |
Установите новые строки разграничителя в форматировщике. |
строка beg("->|"); строка sep(" | |"); строка opn(" ->|"); строка clo(" |<-"); pf.delimiter_strings(beg, sep, opn, clo); | |
put_period_start_delimeter(...) Return Type: OutItrT Parameter: OutItrT |
Помещает стартовый разграничитель в поток в положении, указанном параметром OutItrT. |
put_period_sepatator(...) Return Type: OutItrT Parameter: OutItrT |
Помещает разделитель в поток в положении, указанном параметром OutItrT. |
put_period_end_delimeter(...) Return Type: OutItrT Parameter: OutItrT |
Помещает конечный разграничитель в поток в положении, указанном параметром OutItrT. |
OutItrT put_period(...) Parameters: OutItrT ios_base char_type period_type facet_type |
Помещает период в поток, используя заданные значения для делимитера, разделителя и дисплея диапазона. Параметр граней используется для постановки даты (или времени) объектов периода. |
Syntax | Description |
---|---|
period_parser(...) Parameters: period_range_option char_type* char_type* char_type* char_type* |
Все пять параметров конструкции имеют значения по умолчанию, поэтому этот конструктор также удваивается как конструктор по умолчанию.period_range_option является публичным номером классаperiod_parser . Возможные варианты: AS_ OPEN_RANGE или AS_ Закрытый гнев. Закрытый диапазон — это по умолчанию. Период имеет три важных момента: начало, последний и конец. Закрытый период диапазона принимает форму [начало, конец], где период открытого диапазона принимает форму [начало, конец]. Четыре параметра char_type*: разделитель периода, начальный делимитер, конечный делимитер открытого диапазона и конечный делимитер закрытого диапазона. |
period_parser(period_parser) |
Копировать конструктор |
Syntax | Description |
---|---|
Example | |
period_range_option range_option() |
Возвращает текущую настройку для дисплея диапазона (либо AS_OPEN_RANGE, либо AS_CLOSED_RANGE). |
void range_option(...) Parameter: period_range_option |
Устанавливает опцию для диапазона периодов (AS_OPEN_RANGE или AS_CLOSED_RANGE). |
void delimiter_strings(...) Parameters: string_type string_type string_type string_type |
Установите новые струны делимитера в парсере. |
строка beg("->|"); строка sep(" | |"); строка opn(" ->|"); строка clo(" |<-"); pp.delimiter_strings(beg, sep, opn, clo); | |
collection_type delimiter_strings() |
Возвращает текущую настройку для дисплея диапазона (либо AS_OPEN_RANGE, либо AS_CLOSED_RANGE). |
period_type get_period(...) Parameters: stream_itr_type stream_itr_type ios_base period_type duration_type facet_type |
Парсирует период из потока. Параметры итератора указывают на начало и конец потока. Продолжительность_тип имеет отношение к типу периода, например: Adate_period будет использоватьдней в качестве продолжительности_типа. Период будет анализироваться в соответствии с форматами и строками, найденными в параметре грани. |
________________________________________
Формататор и парсер date_generator обеспечивают гибкость, позволяя пользователю использовать пользовательские «элементы фразы». Эти элементы фразы являются промежуточными словами в генераторах дат. Например, в date_generator "Второй понедельник марта", "Второй" и "Второй" - элементы фразы, где "Понедельник" и "Март" - элементы даты. Настройка элементов даты производится с гранью. Порядок даты и элементы фразы изменить нельзя. При разборе все элементы фразы date_generator должны быть правильно разобраны или ios_base:
По умолчанию «phrase_strings»:
"Первый" | "второй" | "третий" | "четвертый" | "пятый" | "последний" | "до" | "после" | "о" |
Пользовательский набор фраз_струн должен поддерживать этот порядок возникновения (Ex: «1-я», «2-я», «3-я», «4-я», «5-я», «последняя», «предыдущая», «прошлая», «в»).
Примеры использования фразы по умолчанию_strings и форматов по умолчанию для будни и месяца:
"first Tue of Mar"
И используя пользовательскую фразу_строк:
"1st Tue in Mar"
Настраиваемый набор элементов фразы может быть установлен в качестве параметров конструкции или через функцию доступа. Пользовательский парсер/форматер date_generator может быть использован в качестве конструктивного параметра для нового аспекта или может быть установлен в существующем аспекте с помощью функции доступа.
ВАЖНОЕ ПРИМЕЧАНИЕ: До 1.33, неполная дата была выведена как «1 Ян» с одним * или * двузначным числом для дня. Новое поведение заключается в том, чтобы *всегда* помещать двузначное число на день - "01 января".
Date Generator Formatter Doxygen Reference
and here: Date Generator Parser Doxygen Reference
Syntax | Description |
---|---|
date_generator_formatter() |
Использует элементы генератора дат по умолчанию. |
date_generator_formatter(...) Parameters: string_type first_element string_type second_element string_type third_element string_type fourth_element string_type fifth_element string_type last_element string_type before_element string_type after_element string_type of_element |
Конструирует формат date_generator_formatter с использованием заданных строк элементов. |
Syntax | Description |
---|---|
Example | |
void elements(...) Parameters: collection_type phrase_elements |
Замените существующие элементы фразы набором новых. Параметрphrase_elements — это число, которое указывает, что является первым элементом в новой коллекции (по умолчанию). |
// col представляет собой коллекционный холдинг // «финал», «приор», «следующий», // и «в» typedef date_generator_formatter dgf; dgf formatter(); formatter.elements(col, dgf::last); // полными элементами в dgf являются теперь: «первый», «второй», «третий», «четвертый», «пятый», «финал», «приор», «следующий» и «в» | |
put_partial_date(...) Return Type: facet_type::OutItrT Parameters: OutItrT next ios_base char_type fill partial_date facet_type |
Функция Put для Partial_date. Это шаблонная функция, которая принимает вид facet_type в качестве параметра. |
Выберите «Partial_date =>dd Month». | |
put_nth_kday(...) Return Type: facet_type::OutItrT Parameters: OutItrT next ios_base char_type fill nth_kday_type facet_type |
Функция позиционирования nth_kday_type. Это шаблонная функция, которая принимает вид facet_type в качестве параметра. |
Поместите nth_day_of_the_week_in_month =>"nth weekday of month". | |
put_first_kday(...) Return Type: facet_type::OutItrT Parameters: OutItrT next ios_base char_type fill first_kday_type facet_type |
Функция Put для первого_kday_type. Это шаблонная функция, которая принимает вид facet_type в качестве параметра. |
Выберите «первый день месяца» (first weekday of the week in month). | |
put_last_kday(...) Return Type: facet_type::OutItrT Parameters: OutItrT next ios_base char_type fill last_kday_type facet_type |
Функция put для Last_kday_type. Это шаблонная функция, которая принимает вид facet_type в качестве параметра. |
Поставить last_day_of_the_week_in_month =>"последний будний день месяца". | |
put_kday_before(...) Return Type: facet_type::OutItrT Parameters: OutItrT next ios_base char_type fill kday_before_type facet_type |
Функция put для kday_before_type. Это шаблонная функция, которая принимает вид facet_type в качестве параметра. |
Положите первый_day_of_the_week_before =>"за день до" | |
put_kday_after(...) Return Type: facet_type::OutItrT Parameters: OutItrT next ios_base char_type fill kday_after_type facet_type |
Функция put для kday_after_type. Это шаблонная функция, которая принимает вид facet_type в качестве параметра. |
Выберите «первый день_of_the_week_after» => |
Syntax | Description |
---|---|
date_generator_parser() |
Использует элементы генератора дат по умолчанию. |
date_generator_parser(...) Parameter: date_generator_parser |
Копировать конструктор |
date_generator_parser(...) Parameters: string_type first_element string_type second_element string_type third_element string_type fourth_element string_type fifth_element string_type last_element string_type before_element string_type after_element string_type of_element |
Конструирует date_generator_parser с использованием заданных строк элементов. |
Syntax | Description |
---|---|
Example | |
void element_strings(...) Parameter: collection_type |
Замените строку генератора дат новым набором. |
void element_strings(...) Parameters: string_type first string_type second string_type third string_type fourth string_type fifth string_type last string_type before string_type after string_type of |
Заменить набор элементов генератора дат новыми значениями. |
get_partial_date_type(...) Return Type: facet_type::partial_date_type Parameters: stream_itr_type next stream_itr_type str_end ios_base facet_type |
Шаблонная функция, которая анализирует генератор даты из потока. |
Parses a partial_date =>«dd Месяц». | |
get_nth_kday_type(...) Return Type: facet_type::nth_kday_type Parameters: stream_itr_type next stream_itr_type str_end ios_base facet_type |
Шаблонная функция, которая анализирует генератор даты из потока. |
Парсирует nth_day_of_week_in_month =>«день недели месяца». | |
get_first_kday_type(...) Return Type: facet_type::firat_kday_type Parameters: stream_itr_type next stream_itr_type str_end ios_base facet_type |
Шаблонная функция, которая анализирует генератор даты из потока. |
Парсирует первый день_of_the_week_in_month =>«первый будний день месяца». | |
get_last_kday_type(...) Return Type: facet_type::last_kday_type Parameters: stream_itr_type next stream_itr_type str_end ios_base facet_type |
Шаблонная функция, которая анализирует генератор даты из потока. |
Обсуждение Last_day_of_the_week_in_month =>«последний будний день месяца». | |
get_kday_before_type(...) Return Type: facet_type::kday_before_type Parameters: stream_itr_type next stream_itr_type str_end ios_base facet_type |
Шаблонная функция, которая анализирует генератор даты из потока. |
Parses a first_day_of_the_week_before =>"weekday before" | |
get_kday_after_type(...) Return Type: facet_type::kday_after_type Parameters: stream_itr_type next stream_itr_type str_end ios_base facet_type |
Шаблонная функция, которая анализирует генератор даты из потока. |
Parses a first_day_of_the_week_after =>"weekday after". |
________________________________________
Библиотека date_time использует пять специальных значений. Они:
не_a_date_time | ng_infin | pos_infin | min_date_time | max_date_time |
По умолчанию набор строк, используемых для представления этих типов: «не-дата-время», «-бесконечность», «+бесконечность», «минимум-дата-время», «максимум-дата-время». При выходе min_date-time и max_date_time отображаются как обычные представления даты/времени: «1400-Jan-01» и «9999-Dec-31» соответственно.
Парсер/форматтер специальных значений позволяет пользователю устанавливать пользовательские строки для этих специальных значений. Эти строки могут быть установлены в качестве параметров конструкции для нового аспекта или могут быть установлены в существующем аспекте через функцию доступа.
Special Values Formatter Doxygen Reference
and here: Special Values Parser Doxygen Reference
Syntax | Description |
---|---|
special_values_formatter() |
Конструктор использует дефолты для специальных строк значений. |
special_values_formatter(...) Parameters: collection_type::iterator collection_type::iterator |
Конструкции, использующие ценности в сборе. ПРИМЕЧАНИЕ: Используются только первые три строки коллекции. Струны для минимального_date_time и максимального_date_time игнорируются, поскольку эти специальные значения выводятся как обычные даты/время. |
special_values_formatter(...) Parameters: char_type* char_type* |
Конструирует специальный формататор значений из массива строк. |
Syntax | Description |
---|---|
Example | |
OutItrT put_special(...) Parameters: OutItrT next special_values value |
Помещает данное особое значение в поток. |
date d1(not_a_date_time); date d2(minimum_date_time); special_values_formatter formatter; formatter.put_special(itr, d1); // Puts: "not-a-date-time" formatter.put_special(itr, d2); // Puts: "1400-Jan-01" |
Syntax | Description |
---|---|
special_values_parser() |
#160; |
special_values_parser(...) Parameters: collection_type::iterator collection_type::iterator |
Построение парсера специальных значений с использованием струн в коллекции. |
special_values_parser(...) Parameter: scpecial_values_parser |
Копировать конструктор. |
special_values_parser(...) Parameters: string_type nadt_str string_type neg_inf_str string_type pos_inf_str string_type min_dt_str string_type max_dt_str |
Конструирует парсер специальных значений с использованием поставляемых строк. |
Syntax | Description |
---|---|
Example | |
void sv_strings(...) Parameters: string_type nadt_str string_type neg_inf_str string_type pos_inf_str string_type min_dt_str string_type max_dt_str |
Замените набор специальных строк значений на заданные. |
bool match(...) Parameters: stream_itr_type beg stream_itr_type end match_results |
Возвращается, если анализ был успешным. При успешном разбореmr.current_match будут установлены значения int, соответствующие эквивалентному значению special_value. |
// stream holds "maximum_date_time" typedef special_values_parser svp; svp parser; svp::match_results mr; if(parser.match(itr, str_end, mr)) {d = date(static_cast |
________________________________________
Парсер даты формата — объект, удерживающий строки на месяцы и названия будней, а также их сокращения. Настраиваемые наборы строк могут быть установлены во время строительства, или строки в существующем формате_date_parser могут быть заменены через функции доступа. И конструктор, и функции доступа принимают вектор строк в качестве аргументов.
Doxygen Reference
Syntax | Description |
---|---|
format_date_parser(...) Parameters: string_type format std::locale |
Создает парсер, который использует заданный формат для парсинга дат (в тех функциях, где нет параметра формата). Используемые названия и сокращения извлекаются из данной местности. |
format_date_parser(...) Parameters: string_type format input_collection_type input_collection_type input_collection_type input_collection_type |
Создает парсер от использования заданных компонентов. Параметры input_collection_type предназначены для: имен коротких месяцев, имен длинных месяцев, имен коротких дней недели и имен длинных дней недели (в этом порядке). Эти коллекции должны содержать значения для каждого месяца и каждого будня (начиная с января и воскресенья). |
format_date_parser(...) Parameters: format_date_parser |
Копировать конструктор |
Syntax | Description |
---|---|
Example | |
string_type format() |
Возвращает текущую настройку для дисплея диапазона (либо AS_OPEN_RANGE, либо AS_CLOSED_RANGE). |
void format(string_type) |
Устанавливает формат, который будет использоваться при разборе дат в тех функциях, где нет параметра формата. |
void short_month_names(...) Parameter: input_collection_type names |
Замените названия коротких месяцев, используемые парсером. Коллекция должна содержать значения за каждый месяц, начиная с января. |
void long_month_names(...) Parameter: input_collection_type names |
Замените названия длинных месяцев, используемые парсером. Коллекция должна содержать значения за каждый месяц, начиная с января. |
void short_weekday_names(...) Parameter: input_collection_type names |
Замените короткие будние имена, используемые парсером. Коллекция должна содержать значения для каждого будня, начиная с воскресенья. |
void long_weekday_names(...) Parameter: input_collection_type names |
Замените длинные будние имена, используемые парсером. Коллекция должна содержать значения для каждого будня, начиная с воскресенья. |
date_type parse_date(...) Parameters: string_type input string_type format special_values_parser |
Выберите дату из заданного ввода с использованием заданного формата. |
string inp("2005-Apr-15"); string format("%Y-%b-%d"); date d; d = parser.parse_date(inp, format, svp); // d == 2005-Apr-15 | |
date_type parse_date(...) Parameters: istreambuf_iterator input istreambuf_iterator str_end special_values_parser |
Парсировать дату из потока, используя формат парсера. |
date_type parse_date(...) Parameters: istreambuf_iterator input istreambuf_iterator str_end string_type format special_values_parser |
Просмотр даты из потока с использованием данного формата. |
// поток держит формат строки «2005-04-15» («%Y-%m-%d»); дата d; d = parser.parse_date (itr, str_end, format, svp); // d == 2005-Apr-15 | |
month_type parse_month(...) Parameters: istreambuf_iterator input istreambuf_iterator str_end string_type format |
Парсирует месяц от потока с использованием заданного формата. Бросает плохой_месяц, если не в состоянии разобрать. |
// поток удерживает формат строки «Март»(«%B»); greg_month m; m = parser.parse_month(itr, str_end, format); // m == March | |
day_type parse_day_of_month(...) Parameters: istreambuf_iterator input istreambuf_iterator str_end |
Парсирует день из месяца от потока. День должен выглядеть как двузначное число (01-31), или будет брошен плохой день месяца. |
// поток удерживает "01" greg_day d; d = parser.parse_day_of_month (itr, str_end); // d == 1st | |
day_type parse_var_day_of_month(...) Parameters: istreambuf_iterator input istreambuf_iterator str_end |
Парсирует день из месяца от потока. День должен выглядеть как одно- или двухзначное число (1-31), или будет брошен плохой день месяца. |
// поток удерживает "1" greg_day d; d = parser.parse_var_day_of_month (itr, str_end); // d == 1st | |
day_of_week_type parse_weekday(...) Parameters: istreambuf_iterator input istreambuf_iterator str_end string_type format |
Парсировать будний день из потока по заданному формату. Бросает плохой будний день, если не в состоянии разобрать. |
// stream holds "Tue" string format("%a"); greg_weekday wd; wd = parser.parse_weekday(itr, str_end, format); // wd == Tuesday | |
year_type parse_year(...) Parameters: istreambuf_iterator input istreambuf_iterator str_end string_type format |
Парсировать год из потока по заданному формату. Бросает плохой год, если не в состоянии разобрать. |
// поток имеет формат строки «98»(«%y»); greg_year y; y = parser.parse_year (itr, str_end, format); // y == 1998 |
Аспекты автоматически пропитываются, когда называются операторы «>>» и «<<». Список объектов date_time, которые можно транслировать:
date
,
days
,
date_period
,
greg_month
,
greg_weekday
,
greg_year
,
partial_date
,
nth_day_of_the_week_in_month
,
first_day_of_the_week_in_month
,
last_day_of_the_week_in_month
,
first_day_of_the_week_after
,
first_day_of_the_week_before
ptime
,
time_period
,
time_duration
local_date_time
Следующим примером является базовое использование нового кода ввода-вывода, использующего все по умолчанию. (Этот пример можно найти вlibs/date_time/examples/tutorial)
Каталог
date d(2004, Feb, 29); time_duration td(12,34,56,789); stringstream ss; ss << d << ' ' << td; ptime pt(not_a_date_time); cout << pt << endl; // "not-a-date-time" ss >> pt; cout << pt << endl; // "2004-Feb-29 12:34:56.000789" ss.str(""); ss << pt << " EDT-05EDT,M4.1.0,M10.5.0"; local_date_time ldt(not_a_date_time); ss >> ldt; cout << ldt << endl; // "2004-Feb-29 12:34:56.000789 EDT"
В этом примере использовались настройки по умолчанию для граней ввода и вывода. Форматы по умолчанию таковы, что возможна интероперабельность, как показано в примере. ПРИМЕЧАНИЕ: Вводная потоковая передача локального_date_time может быть выполнена только с помощью строкипозикса часового пояса. Формат вывода по умолчанию использует аббревиатуру часового пояса. Формат может быть изменен таким образом и в соответствии (как мы увидим позже в этом руководстве).
Строки формата контролируют порядок, тип и стиль используемых элементов даты/времени. Формы предоставляют некоторые предопределенные форматы (iso_format_specifier, iso_format_extended_specifier и default_date_format), но пользователь может легко создать свой собственный.
(continued from previous example)local_time_facet* output_facet = new local_time_facet(); local_time_input_facet* input_facet = new local_time_input_facet(); ss.imbue(locale(locale::classic(), output_facet)); ss.imbue(locale(ss.getloc(), input_facet)); output_facet->format("%a %b %d, %H:%M %z"); ss.str(""); ss << ldt; cout << ss.str() << endl; // "Sun Feb 29, 12:34 EDT" output_facet->format(local_time_facet::iso_time_format_specifier); ss.str(""); ss << ldt; cout << ss.str() << endl; // "20040229T123456.000789-0500" output_facet->format(local_time_facet::iso_time_format_extended_specifier); ss.str(""); ss << ldt; cout << ss.str() << endl; // "2004-02-29 12:34:56.000789-05:00"
Строки формата не ограничены элементами даты/времени. Дополнительное слово может быть помещено в строку формата. ПРИМЕЧАНИЕ: Когда дополнительное словосочетание присутствует в формате ввода, вводимые данные также должны содержать точное словосочетание.
(continued from previous example)// extra words in format string my_format("The extended ordinal time %Y-%jT%H:%M can also be \ represented as %A %B %d, %Y"); output_facet->format(my_format.c_str()); input_facet->format(my_format.c_str()); ss.str(""); ss << ldt; cout << ss.str() << endl; // matching extra words in input ss.str("The extended ordinal time 2005-128T12:15 can also be \ represented as Sunday May 08, 2005"); ss >> ldt; cout << ldt << endl;
До сих пор мы показали, как пользователь может добиться большой настройки с минимальными усилиями, используя форматы. Дальнейшая настройка может быть достигнута с помощью определенных пользователем элементов (т.е. строк). Элементы, которые могут быть настроены: специальные имена значений, имена месяцев, аббревиатуры месяца, названия будни, аббревиатуры будни, разграничители даты / периодов времени и элементы фразы генераторов даты.
Значения по умолчанию для них следующие:
not-a-date-time
,
-infinity
,
+infinity
,
minimum-date-time
,
maximum-date-time
Английский календарь и три буквенные сокращения
Английский календарь и три буквенные сокращения
first
,
second
,
third
,
fourth
,
fifth
,
last
,
before
,
after
,
of
ПРИМЕЧАНИЕ: Ранее мы показали, что компоненты представления даты/времени могут быть переупорядочены через строку формата. Это не относится к генераторам дат. Сами элементы могут быть настроены, но их порядок не может быть изменен.
Чтобы проиллюстрировать возможности настройки, мы будем использовать пользовательские строки в течение месяцев и будни (мы будем использовать только длинные имена, для этого примера).
(continued from previous example)// set up the collections of custom strings. // only the full names are altered for the sake of brevity string month_names[12] = { "january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december" }; vector<string> long_months(&month_names[0], &month_names[12]); string day_names[7] = { "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" }; vector<string> long_days(&day_names[0], &day_names[7]); // create date_facet and date_input_facet using all defaults date_facet* date_output = new date_facet(); date_input_facet* date_input = new date_input_facet(); ss.imbue(locale(ss.getloc(), date_output)); ss.imbue(locale(ss.getloc(), date_input)); // replace names in the output facet date_output->long_month_names(long_months); date_output->long_weekday_names(long_days); // replace names in the input facet date_input->long_month_names(long_months); date_input->long_weekday_names(long_days); // customize month, weekday and date formats date_output->format("%Y-%B-%d"); date_input->format("%Y-%B-%d"); date_output->month_format("%B"); // full name date_input->month_format("%B"); // full name date_output->weekday_format("%A"); // full name date_input->weekday_format("%A"); // full name ss.str(""); ss << greg_month(3); cout << ss.str() << endl; // "march" ss.str(""); ss << greg_weekday(3); cout << ss.str() << endl; // "tuesday" ss.str(""); ss << date(2005,Jul,4); cout << ss.str() << endl; // "2005-july-04"
Настройка ввода и вывода специальных значений лучше всего осуществляется путем создания нового специального_значения_парсера и специального_значения_форматтера. Новые струны могут быть установлены во время строительства (как в примере ниже).
(continued from previous example)// reset the formats to defaults output_facet->format(local_time_facet::default_time_format); input_facet->format(local_time_input_facet::default_time_input_format); // create custom special_values parser and formatter objects // and add them to the facets string sv[5] = {"nadt","neg_inf", "pos_inf", "min_dt", "max_dt" }; vector<string> sv_names(&sv[0], &sv[5]); special_values_parser sv_parser(sv_names.begin(), sv_names.end()); special_values_formatter sv_formatter(sv_names.begin(), sv_names.end()); output_facet->special_values_formatter(sv_formatter); input_facet->special_values_parser(sv_parser); ss.str(""); ldt = local_date_time(not_a_date_time); ss << ldt; cout << ss.str() << endl; // "nadt" ss.str("min_dt"); ss >> ldt; ss.str(""); ss << ldt; cout << ss.str() << endl; // "1400-Jan-01 00:00:00 UTC"
ПРИМЕЧАНИЕ: несмотря на то, что мы отправили строки для min и max в форматировщик, они игнорируются, потому что эти специальные значения строятся на фактические даты (как показано выше).
Настройка ввода и вывода периодов лучше всего осуществляется путем создания нового парсера периодов и формата периодов. Новые струны могут быть установлены во время строительства (как в примере ниже).
(continued from previous example)// all formats set back to defaults (not shown for brevity) // create our date_period date_period dp(date(2005,Mar,1), days(31)); // month of march // custom period formatter and parser period_formatter per_formatter(period_formatter::AS_OPEN_RANGE, " to ", "from ", " exclusive", " inclusive" ); period_parser per_parser(period_parser::AS_OPEN_RANGE, " to ", "from ", " exclusive" , "inclusive" ); // default output ss.str(""); ss << dp; cout << ss.str() << endl; // "[2005-Mar-01/2005-Mar-31]" // add out custom parser and formatter to the facets date_output->period_formatter(per_formatter); date_input->period_parser(per_parser); // custom output ss.str(""); ss << dp; cout << ss.str() << endl; // "from 2005-Feb-01 to 2005-Apr-01 exclusive"
Настройка ввода и вывода генераторов дат производится путем замены существующих строк (в аспекте) новыми строками.
ПРИМЕЧАНИЕ: Ранее мы показали, что компоненты представления даты/времени могут быть переупорядочены через строку формата. Это не относится к генераторам дат. Сами элементы могут быть настроены, но их порядок не может быть изменен.
(continued from previous example)// custom date_generator phrases string dg_phrases[9] = { "1st", "2nd", "3rd", "4th", "5th", "final", "prior to", "following", "in" }; vector<string> phrases(&dg_phrases[0], &dg_phrases[9]); // create our date_generator first_day_of_the_week_before d_gen(Monday); // default output ss.str(""); ss << d_gen; cout << ss.str() << endl; // "Mon before" // add our custom strings to the date facets date_output->date_gen_phrase_strings(phrases); date_input->date_gen_element_strings(phrases); // custom output ss.str(""); ss << d_gen; cout << ss.str() << endl; // "Mon prior to"
Статья Date Time Input/Output раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 10. Boost.Date_Time может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Chapter 10. Boost.Date_Time ::
реклама |