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.