ambiguous_local_time

ambiguous_local_time (모호한 로컬 시간 변환 예외)

로컬 시각을 시스템 시각으로 바꾸려는데 그 시각이 두 번 해석될 수 있을 때 던져지는 예외 타입이에요. std::chrono::choose(earliest/latest)를 지정하지 않고 std::chrono::local_timesys_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)
  1. 버전은 변환하려던 로컬 시각 tp와 그 시각 정보 i를 받아 예외를 만들어요. what()이 반환하는 설명 문자열은 예를 들어 tp << " is ambiguous. It could be..." 형태로, 어느 쪽 시각으로도 해석될 수 있음을 알려줘요.

즉, 하절기 전환으로 같은 로컬 시각이 두 번 나타나는 시간대에서 날짜/시간 변환을 다룰 때 이 예외를 잡아 처리하면 돼요.

더 알아보기 (Learn more)

cppreference