choose
열거형
time_zone
zoned_time
모호하거나 존재하지 않는 local_time
변환을 처리하는 방법을 나타내기 위해 sys_time
사용됩니다.
구문
enum class choose { // C++20
earliest,
latest
};
멤버
요소 | 설명 |
---|---|
earliest |
시간 변환이 모호한 경우 이전 시점을 사용합니다. |
latest |
시간 변환이 모호한 경우 이후 시점을 사용합니다. |
설명
변환 결과가 a nonexistent_local_time
이면 시간이 earliest
같고 latest
동일합니다.
모호한 변환 오류
일광 절약 시간에서 가을의 표준 시간으로 전환하는 동안 시계는 기본적으로 추가 시간을 얻습니다. 표준 시간으로 전환하는 것이 시간을 잃는 것을 의미하지 않기 때문에 혼란스러울 수 있습니다. 한 시간 뒤로 떨어지면 시계가 표준 시간에 맞게 조정된 후 전환 전 시간이 반복됩니다. 11월 첫 번째 일요일 오전 2:00에 발생하는 뉴욕의 표준시 변경 사항을 고려하세요. 첫째, 1:00am이 지갑니다. 오전 2시에 시계가 표준 시간으로 전환되므로 지금은 다시 오전 1:00입니다. 즉, 오전 1시에서 새벽 2시 사이의 시간은 "반복"되어 효과적으로 한 시간을 추가합니다.
local_time
이 "추가" 시간 동안 시간을 지정하는 경우 변환하는 방법은 명확하지 않습니다. 변환된 시간을 해당 시간이 발생하는 "첫 번째" 시간 또는 "두 번째"로 처리해야 하나요? 열거형 choose
을 지정하지 않으면 예외가 발생합니다 ambiguous_local_time
.
존재하지 않는 변환 오류
표준 시간에서 일광 절약 시간으로 변환할 때 다른 문제가 발생할 수 있습니다. 표준시에서 봄의 일광 절약 시간으로 전환하는 동안 시계는 한 시간 앞으로 이동합니다. 건너뛴 시간은 사라지므로 시간에 한 시간을 추가한 것처럼 보이지만 한 시간에 "앞으로 스프링핑"하여 전환 후의 시간이 효과적으로 제거됩니다.
3월 두 번째 일요일 오전 2시에 발생하는 뉴욕의 일광 절약 시간제 변경 사항을 고려하세요. 오전 2시에 시계는 일광 절약 시간으로 전환되고 이제 오전 3:00을 읽습니다. local_time
예를 들어 변환되는 시간이 오전 2시 30분인 경우 해당 시간은 "제거"된 기간 중이므로 "존재하지 않음"으로 인해 예외가 nonexistent_local_time
발생합니다.
요구 사항
헤더: <chrono>
(C++20 이후)
네임스페이스: std::chrono
컴파일러 옵션:/std:c++latest
필수입니다.