Classe nonexistent_local_time
Essa exceção é gerada ao tentar converter um local_time
em um sys_time
inexistente.
Sintaxe
class nonexistent_local_time : public runtime_error; // C++20
Comentários
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 local_time
que está sendo convertida for 2h30, por exemplo, esse tempo será durante o período que foi "removido" e, portanto, é "inexistente".
O exemplo a seguir demonstra um erro de conversão de tempo inexistente. Neste exemplo, o horário de verão em Nova York começa às 2h. A hora que está sendo convertida é 2h30. Isso ocorre durante a hora que é removida devido à transição do horário padrão para o horário de verão. Então, uma exceção nonexistent_local_time
é lançada.
Exemplo: nonexistent_local_time
#include <chrono>
#include <iostream>
using namespace std::chrono;
int main()
{
try
{
// The following will throw an exception because the local time being converted is during
// the hour that is "removed" when the clock advances an hour for daylight saving time.
auto zt = zoned_time{"America/New_York", local_days{Sunday[2]/March/2016} + 2h + 30min};
} catch (const nonexistent_local_time& e)
{
std::cout << e.what() << '\n';
}
return 0;
}
2016-03-13 02:30:00 is in a gap between
2016-03-13 02:00:00 EST and
2016-03-13 03:00:00 EDT which are both equivalent to
2016-03-13 07:00:00 UTC
Membros
Nome | Descrição |
---|---|
Construtores | Construa um nonexistent_local_time . |
what |
Obtém uma cadeia de caracteres que descreve o tempo inexistente. |
Requisitos
Cabeçalho: <chrono>
(desde C++20)
Namespace: std::chrono
Opção do compilador: /std:c++latest
Construtor
Constrói um nonexistent_local_time
.
template<class Duration>
nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
Parâmetros
tp
O local_time que falhou na conversão.
i
Informações sobre a tentativa de conversão. Confira local_info
para obter detalhes.
Comentários
Normalmente, você não criará essa exceção. Ela é gerada por funções que convertem um local_time
em um sys_time
.
what
Obtém uma cadeia de caracteres que descreve por que o tempo é inexistente.
[[nodiscard]] virtual const char* what() const noexcept;
Valor retornado
Uma cadeia de caracteres que descreve por que o tempo é inexistente. Por exemplo:
2016-03-13 02:30:00 is in a gap between
2016-03-13 02:00:00 EST and
2016-03-13 03:00:00 EDT which are both equivalent to
2016-03-13 07:00:00 UTC
Confira também
<chrono>
to_sys
ambiguous_local_time
Referência de Arquivos de Cabeçalho