Condividi tramite


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