X::DateTime::TimezoneClash 타입
X::DateTime::TimezoneClash 타입 (raku-type-x-datetime-timezoneclash)
시간대 오프셋과 :timezone 이름 인자를 동시에 지정하려 했을 때 던져지는 예외예요. 두 가지 방식으로 시간대를 알려주면 어느 쪽을 믿어야 할지 모호해지니까, Raku가 이 예외로 막아줘요.
정의
class X::DateTime::TimezoneClash does X::Temporal is Exception { }
DateTime 객체를 만들 때 시간대 오프셋(문자열에 붙는 +0200 같은 것)과 :timezone 이름 인자를 둘 다 지정하면 이 예외가 발생해요. 실제로 어떤 조합이 되는지 보면 금방 이해돼요.
say DateTime.new('2015-12-24T12:23:00+0200'); # works
say DateTime.new('2015-12-24T12:23:00', timezone => 7200); # works
say DateTime.new('2015-12-24T12:23:00+0200', timezone => 7200); # exception
첫 번째는 오프셋만으로 시간대를 앎, 두 번째는 :timezone으로만 지정, 그런데 세 번째는 둘 다 넣어서 충돌이 나는 거예요.
메서드
method message
method message()
'DateTime.new(Str): :timezone argument not allowed with a timestamp offset' 문자열을 돌려줘요. 즉 "오프셋을 지정한 상태에서는 :timezone 인자를 허용하지 않는다"는 뜻이죠.
참고: 해결하려면 두 가지 방법 중 하나만 쓰면 돼요. 정확한 UTC 오프셋을 알고 있다면 그 문자열을 그대로 쓰고, 아니면
:timezone만 넘겨주면 충돌이 없어요.