nonexistent_local_time
클래스
이 예외는 존재하지 않는 것으로 변환 local_time
하려고 할 때 throw됩니다 sys_time
.
구문
class nonexistent_local_time : public runtime_error; // C++20
설명
봄에 표준 시간에서 일광 절약 시간으로 전환하는 동안 시계는 기본적으로 한 시간을 잃게됩니다. 일광 절약 시간제로 전환하는 것이 시간을 추가하는 것을 의미하지 않기 때문에 혼란스러울 수 있습니다. 한 시간에 "앞으로 스프링"하여 전환 후의 시간이 효과적으로 제거됩니다. 3월 두 번째 일요일 오전 2시에 발생하는 뉴욕의 일광 절약 시간제 변경 사항을 고려하세요. 오전 2시에 시계는 일광 절약 시간으로 전환되고 이제 오전 3:00을 읽습니다. local_time
예를 들어 변환되는 시간이 오전 2시 30분인 경우 해당 시간은 "제거"된 기간 중이므로 "존재하지 않음"입니다.
다음 예제에서는 존재하지 않는 시간 변환 오류를 보여 줍니다. 이 예제에서는 뉴욕의 일광 절약 시간제가 오전 2시에 시작됩니다. 변환되는 시간은 오전 2시 30분입니다. 표준 시간에서 일광 절약 시간으로의 전환으로 인해 제거되는 시간 동안입니다. 따라서 예외가 nonexistent_local_time
throw됩니다.
예: 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
멤버
속성 | 설명 |
---|---|
생성자 | 를 생성합니다 nonexistent_local_time . |
what |
존재하지 않는 시간을 설명하는 문자열을 가져옵니다. |
요구 사항
헤더: <chrono>
(C++20 이후)
네임스페이스: std::chrono
컴파일러 옵션: /std:c++latest
생성자
nonexistent_local_time
를 생성합니다.
template<class Duration>
nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
매개 변수
tp
변환에 실패한 local_time.
i
변환 시도에 대한 정보입니다. 자세한 내용은 local_info
를 참조하세요.
설명
일반적으로 이 예외는 만들지 않습니다. 로 변환 local_time
sys_time
하는 함수에 의해 throw됩니다.
what
시간이 존재하지 않는 이유를 설명하는 문자열을 가져옵니다.
[[nodiscard]] virtual const char* what() const noexcept;
반환 값
시간이 존재하지 않는 이유를 설명하는 문자열입니다. 다음은 그 예입니다.
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