Compartilhar via


Struct local_info

Fornece uma interface de baixo nível para informações de fuso horário sobre o resultado da conversão de um local_time em um sys_time.

Sintaxe

struct local_info;

Membros

Função Descrição
result Um código que descreve o resultado da conversão.
first, second O resultado da conversão.

Constantes de membros

Nome Valor Descrição
unique 0 O resultado da conversão é exclusivo.
nonexistent 1 Não há um sys_time correspondente para converter para local_time.
ambiguous 2 O resultado da conversão é ambíguo.

Não membros

Função Descrição
operator<< Gere um local_info para um fluxo.

result

O resultado de converter um local_time para um sys_time.

int result;

Valor retornado

O resultado pode ter um dos seguintes valores:

  • unique: o local_time foi convertido com êxito em um sys_time.
  • nonexistent: não há um mapeamento do local_time para o sys_time.
  • ambiguous: o local_time durante uma transição fica entre o horário de verão e o horário padrão e, portanto, pode ser convertido em dois valores sys_time.

Comentários

Para obter informações sobre como first e second são definidos com base em result, consulte a seção a seguir sobre first, second.

first, second

Fornece o resultado de converter um local_time em um sys_time.

sys_seconds begin;
sys_seconds end;

Valor retornado

first e second são definidos com base em result da seguinte maneira:

result first second
unique Contém o valor de local_time convertido em sys_time inicializado zero
nonexistent Um sys_info que termina pouco antes do local_time Um sys_info que começa logo após o local_time.
ambiguous Um sys_info que termina logo após o local_time. Um sys_info que começa pouco antes do local_time.

ambiguous result code

Durante a transição do horário de verão para o horário padrão no outono, os relógios essencialmente ganham uma hora extra. Pode ser confuso, pois a transição para o horário normal não significa perder uma hora? Ao voltar uma hora, o horário antes da transição será repetido depois que o relógio se ajustar para o horário normal. Pense na mudança no horário normal em Nova York, que acontece no primeiro domingo de novembro às 2h da manhã. Primeiro, passa 1h da manhã. Às 2h, o relógio faz a transição para o horário normal, então agora são 1h da manhã novamente. Isso significa que o horário entre 1h e 2h será "repetido", adicionando efetivamente uma hora. Para ver um exemplo, consulte ambiguous_local_time.

Se um local_time especificar um horário durante essa hora "extra", não fica claro como convertê-lo. O horário convertido deve ser tratado como a "primeira" vez que ocorre essa hora ou a "segunda"? Se a enumeração choose não for especificada para indicar qual deve ser, espere result ser definido como ambiguous, e first e second refletirá as duas opções para a hora em que o local_time poderá ser convertido.

nonexistent result code

Durante a transição do horário padrão para o horário de verão na primavera, os relógios essencialmente perdem uma hora. Isso pode ser confuso porque a transição para o horário de verão não significa adicionar uma hora? Ao "avançar" uma hora, a hora seguinte à transição é efetivamente removida. Considere a mudança para o horário de verão em Nova York, que acontece no segundo domingo de março às 2h. Às 2h, o relógio faz a transição para o horário de verão e agora lê 3h. Se a conversão local_time for 2h30m, por exemplo, esse tempo será durante o período que foi "removido" e, portanto, você poderá esperar que result tenha o código nonexistent. Para ver um exemplo, consulte nonexistent_local_time.

Exemplo: obter um 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)

Requisitos

Cabeçalho: <chrono>

Namespace: std::chrono

Opção do compilador: /std:c++latest

<chrono>
ambiguous_local_time exception
Enumeração choose
file_clock classe
high_resolution_clock
Struct local_t
non_existent exception
Struct system_clock
tai_clock classe
utc_clock classe
Referência de Arquivos de Cabeçalho