다음을 통해 공유


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

참고 항목

<chrono>
to_sys
ambiguous_local_time
헤더 파일 참조