Classe nonexistent_local_time
Questa eccezione viene generata quando si tenta di convertire un oggetto local_time
in un oggetto inesistente sys_time
.
Sintassi
class nonexistent_local_time : public runtime_error; // C++20
Osservazioni:
Durante la transizione dall'ora solare all'ora legale in primavera, gli orologi perdono essenzialmente un'ora. Questo può generare confusione perché la transizione all'ora legale significa aggiungere un'ora? Per "springing forward" un'ora, l'ora successiva alla transizione viene effettivamente rimossa. Prendere in considerazione la modifica all'ora legale a New York, che si verifica la seconda domenica a marzo alle 2:00. Alle 2:00, l'orologio passa all'ora legale e ora legge le 3:00. Se l'oggetto local_time
convertito è 2:30am, ad esempio, tale ora è durante il periodo in cui è stato "rimosso" e così è "inesistente".
Nell'esempio seguente viene illustrato un errore di conversione dell'ora inesistente. In questo esempio, l'ora legale di New York inizia alle 2:00. L'ora di conversione è 2:30am. Questo avviene durante l'ora che viene rimossa a causa della transizione dall'ora solare all'ora legale. Viene quindi generata un'eccezione nonexistent_local_time
.
Esempio: 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
Membri
Nome | Descrizione |
---|---|
Costruttori | Creare un oggetto nonexistent_local_time . |
what |
Ottiene una stringa che descrive l'ora inesistente. |
Requisiti
Intestazione: <chrono>
(da C++20)
Spazio dei nomi: std::chrono
Opzione del compilatore: /std:c++latest
Costruttore
Costruisce un oggetto nonexistent_local_time
.
template<class Duration>
nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
Parametri
tp
Local_time che non è riuscita la conversione.
i
Informazioni sulla conversione tentata. Per informazioni dettagliate, vedere local_info
.
Osservazioni:
In genere non verrà creata questa eccezione. Viene generata da funzioni che converte un oggetto local_time
in un oggetto sys_time
.
what
Ottiene una stringa che descrive il motivo per cui l'ora non è esistente.
[[nodiscard]] virtual const char* what() const noexcept;
Valore restituito
Stringa che descrive il motivo per cui l'ora non è esistente. Ad esempio:
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
Vedi anche
<chrono>
to_sys
ambiguous_local_time
Riferimento file di intestazione