ambiguous_local_time
ambiguous_local_time (모호한 로컬 시간 변환 예외)
로컬 시각을 시스템 시각으로 바꾸려는데 그 시각이 두 번 해석될 수 있을 때 던져지는 예외 타입이에요. std::chrono::choose(earliest/latest)를 지정하지 않고 std::chrono::local_time을 sys_time으로 변환하려 하면 발생해요. <chrono> 헤더, C++20부터 있어요.
출처: cppreference
본문
ambiguous_local_time은 예외로 던질 객체의 타입을 정의해요. 하절기 시각이 겹치는(ambiguous) 로컬 시각을 변환하는 시도를 보고하는 데 쓰이죠.
class ambiguous_local_time;
이 예외는 주로 std::chrono::time_zone::to_sys와, 이를 호출하는 함수들(예: std::chrono::local_time을 받는 std::chrono::zoned_time 생성자)에서 던져져요.
상속 다이어그램 기준으로는 std::runtime_error 계열 예외이며, 기본 멤버 함수들이 제공돼요.
(constructor): 예외 객체를 생성해요.operator=: 예외 객체를 교체해요.what: 설명 문자열을 반환해요.
생성자는 두 가지가 있어요.
template< class Duration >
ambiguous_local_time( const std::chrono::local_time<Duration>& tp,
const std::chrono::local_info& i ); // (1)
ambiguous_local_time( const ambiguous_local_time& other ) noexcept; // (2)
- 버전은 변환하려던 로컬 시각
tp와 그 시각 정보i를 받아 예외를 만들어요.what()이 반환하는 설명 문자열은 예를 들어tp << " is ambiguous. It could be..."형태로, 어느 쪽 시각으로도 해석될 수 있음을 알려줘요.
즉, 하절기 전환으로 같은 로컬 시각이 두 번 나타나는 시간대에서 날짜/시간 변환을 다룰 때 이 예외를 잡아 처리하면 돼요.