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
: olocal_time
foi convertido com êxito em umsys_time
.nonexistent
: não há um mapeamento dolocal_time
para osys_time
.ambiguous
: olocal_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 valoressys_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