Freigeben über


choose-Enumeration

Wird verwendet mit time_zone und zoned_time gibt an, wie eine mehrdeutige oder nicht vorhandene local_time sys_time Konvertierung behandelt wird.

Syntax

enum class choose { // C++20
    earliest,
    latest
};

Member

Element Beschreibung
earliest Wenn eine Zeitkonvertierung mehrdeutig ist, wird der frühere Zeitpunkt verwendet.
latest Wenn eine Zeitkonvertierung mehrdeutig ist, wird der spätere Zeitpunkt verwendet.

Hinweise

Wenn das Ergebnis der Konvertierung ein nonexistent_local_time, die Zeit in earliest und latest sind identisch.

Mehrdeutiger Konvertierungsfehler

Während des Übergangs von Sommerzeit zu Standardzeit im Herbst gewinnen Uhren im Wesentlichen eine zusätzliche Stunde. Dies kann verwirrend sein, weil der Übergang zur Standardzeit nicht bedeutet, dass eine Stunde verloren geht? Wenn Sie eine Stunde zurückfallen, wird die Stunde vor dem Übergang wiederholt, nachdem die Uhr für die Standardzeit angepasst wurde. Berücksichtigen Sie die Änderung der Standardzeit in New York, die am ersten Sonntag im November um 2:00 Uhr geschieht. Zuerst geht es um 1:00 Uhr. Um 2:00 Uhr wechselt die Uhr zur Standardzeit, so dass es jetzt wieder 1:00 Uhr ist. Das bedeutet, dass die Zeit zwischen 1 uhr und 2 Uhr "wiederholt" wird und effektiv eine Stunde hinzugefügt wird.

Wenn eine local_time Zeit während dieser "zusätzlichen" Stunde angegeben wird, ist es nicht klar, wie sie konvertiert werden kann. Sollte die konvertierte Zeit als "erstes" Mal behandelt werden, wenn diese Stunde stattfindet, oder die "zweite"? Wenn die Enumeration choose nicht angegeben ist, um anzugeben, welche Angabe sie sein soll, erhalten Sie eine ambiguous_local_time Ausnahme.

Nicht vorhandener Konvertierungsfehler

Beim Konvertieren von Standardzeit in Sommerzeit kann ein anderes Problem auftreten. Während des Übergangs von Standardzeit zu Sommerzeit im Frühling bewegen sich die Uhren eine Stunde. Die übersprungene Stunde verschwindet, sodass die Stunde nach dem Übergang effektiv entfernt wird, obwohl wir der Zeit eine Stunde hinzugefügt haben.

Berücksichtigen Sie die Änderung der Sommerzeit in New York, die am zweiten Sonntag im März um 2 Uhr geschieht. Um 2:00 Uhr wechselt die Uhr zur Sommerzeit und liest jetzt 3:00 Uhr. Wenn die local_time Konvertierte beispielsweise 2:30 Uhr ist, liegt diese Zeit in dem Zeitraum, der "entfernt" wurde, und ist daher "nicht vorhanden", was zu einer nonexistent_local_time Ausnahme führt.

Anforderungen

Header: <chrono> (seit C++20)

Namespace:std::chrono

Compileroption:/std:c++latest ist erforderlich.

Siehe auch

to_sys
zoned_time Konstruktor