Поделиться через


Структура local_info

Предоставляет низкоуровневый интерфейс для сведений часового пояса о результате преобразования в local_time объект sys_time.

Синтаксис

struct local_info;

Участники

Function Description
result Код, описывающий результат преобразования.
first, second Результат преобразования.

Константы элементов

Имя. Стоимость Описание
unique 0 Результат преобразования является уникальным.
nonexistent 1 Для преобразования в нее sys_time нет соответствующего local_time значения.
ambiguous 2 Результат преобразования является неоднозначным.

Не являющиеся членами

Function Description
operator<< Выводится local_info в поток.

result

Результат преобразования объекта local_time sys_timeв .

int result;

Возвращаемое значение

Результат может быть одним из следующих значений:

  • unique: успешно local_time преобразован в объект sys_time.
  • nonexistent: не существует сопоставления от local_time 10.00 sys_time.
  • ambiguouslocal_time: земли во время перехода между временем летнего и стандартного времени и таким образом могут быть преобразованы в два sys_time значения.

Замечания

Сведения о настройке first и second настройке на основе resultсм. в следующем разделе.firstsecond

first, second

Предоставляет результат преобразования объекта local_time в объект sys_time.

sys_seconds begin;
sys_seconds end;

Возвращаемое значение

first и second задаются следующим result образом:

result first second
unique Содержит значение преобразованного local_time в sys_time нулевые инициализированные
nonexistent A sys_info , который заканчивается непосредственно перед local_time Это sys_info начинается сразу после local_time.
ambiguous Это sys_info заканчивается сразу после local_time Это sys_info начинается непосредственно перед local_time.

ambiguous код результата

Во время перехода с летнего времени на стандартное время осенью часы по сути получают дополнительный час. Это может быть запутано, потому что не переход на стандартное время означает потерю часа? Попадая обратно в час, час до перехода будет повторяться после того, как часы корректируются на стандартное время. Рассмотрим изменение стандартного времени в Нью-йорке, которое происходит в первое воскресенье в ноябре в 2:00 утра. Во-первых, 1:00 утра идет. В 2 утра часы переходит в стандартное время, поэтому теперь это 1:00 утра снова. Это означает, что время между 1 утра и 2 утра будет "повторяться", эффективно добавляя час. Пример см. в разделе ambiguous_local_time.

Если значение local_time указывает время в течение этого дополнительного часа, это не ясно, как преобразовать его. Следует ли рассматривать преобразованное время как "первое" время, которое происходит час, или "второй"? Если перечисление choose не указано, чтобы указать, в каком случае оно должно быть second ambiguousfirst задано, и result будет отражать два варианта времени, в которое local_time может быть преобразовано значение.

nonexistent код результата

Во время перехода с стандартного времени на летнее время весной часы по сути теряют час. Это может быть запутано, потому что не переход на летнее время означает добавление часа? По "спринг вперед" час после перехода фактически удаляется. Рассмотрим изменение летнего времени в Нью-йорке, которое происходит во второй воскресенье в марте в 2 утра. В 2 утра часы переходит на летнее время и теперь считывает 3:00 утра. local_time Если преобразуемое значение равно 2:30 утра, то время за период, который был удален, и поэтому можно ожидатьresult, что код будет выполненnonexistent. Пример см. в разделе nonexistent_local_time.

Пример: получение local_info

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    const auto& timeZoneDatabase = get_tzdb();
    const auto& currentZone = timeZoneDatabase.current_zone();

    local_time<system_clock::duration> lt = currentZone->to_local(system_clock::now());

    auto localInfo = currentZone->get_info(lt);

    std::cout << "local_time: " << lt << "\n";
    std::cout << localInfo << "\n";

    return 0;
}
local_time: 2021-09-08 15:37:57.6853963
result: unique, first: (begin: 2021-03-14 10:00:00, end: 2021-11-07 09:00:00, offset: -25200s, save: 60min, abbrev: PDT)

Требования

Заголовок: <chrono>

Пространство имен: std::chrono

Параметр компилятора: /std:c++latest

<chrono>
ambiguous_local_time исключение
choose enum
Класс file_clock
high_resolution_clock
Структура local_t
non_existent исключение
Структура system_clock
Класс tai_clock
Класс utc_clock
Справочник по файлам заголовков