요약
특정 시간대(timezone="Europe/Berlin" 및 showLocalTime="true")가 설정된 상태로 생성된 새 이벤트는 .ics 파일을 다운로드하여 **Outlook (Windows)**에 가져올 때 +1시간의 오차가 있는 잘못된 시간을 표시합니다. 포럼 자체에서는 시간이 올바르게 표시됩니다. 영향은 .ics 파일 통한 가져오기인 새 이벤트에만 해당됩니다.
재현 방법
이벤트를 생성합니다(오늘, 서머타임 CEST/UTC+2 적용 중): 베를린 시간 오후 5:00 – 오후 7:15.
(해당 파일에는 Europe/Berlin에 대한 VTIMEZONE 블록이 포함되어 있지 않습니다.)
분석 / 의심되는 원인
내보내기 과정에서 UTC(...Z)가 아닌 IANA 이름인 TZID=Europe/Berlin으로 지역 시간이 지정됩니다. Outlook은 IANA 시간대 이름(“W. Europe Standard Time”과 같은 Windows 식별자를 사용)을 이해하지 못하며, VTIMEZONE 정의가 없으면 고정 오프셋인 **UTC+1 (CET/동계 시간)**으로 폴백합니다. 서머타임 기간(CEST = UTC+2)에는 이로 인해 정확히 +1시간의 오차가 발생합니다. 교차 검증: 동일한 파일을 Google Calendar(IANA 시간대를 기본적으로 이해함)에 가져오면 17:00이 올바르게 표시됩니다.
추가 관찰 사항:timezone=/showLocalTime 없이 동일한 이벤트를 생성하면, 내보내진 .ics 파일은 UTC를 사용하며 Outlook에서는 +2시간이 표시됩니다(17:00 UTC = 19:00 CEST). 이는 문서화된 UTC 동작이지만, 지역 시간을 기대하는 사용자에게 ICS 내보내기 주변의 시간대 처리가 혼란스럽다는 점을 더 잘 보여줍니다.
이 문제는 서버/컨테이너의 시간대가 아니라 ICS 내보내기 과정에서 발생합니다. 내보내진 이벤트는 Europe/Berlin과 같은 IANA TZID를 사용하지만, Outlook와 같은 클라이언트가 일광절약제(DST) 규칙을 안정적으로 해석하는 데 필요한 해당 VTIMEZONE 정의를 현재 포함하지 않고 있습니다.
해당 PR은 시간대 인식 ICS 다운로드에 VTIMEZONE 정의를 추가하는 동시에 기존 로컬 DTSTART/DTEND 값을 유지합니다.
이 토픽의 예시와 관련하여, 내보내기 시 Europe/Berlin에 대한 CET/CEST 적용 사항이 이제 포함되므로:
DTSTART;TZID=Europe/Berlin:20260811T170000
Outlook이 UTC+1로 폴백하는 대신 올바른 UTC+2 여름 오프셋으로 해석될 수 있습니다.
또한 유럽과 북미의 일광절약제 규칙, 고정 오프셋 사례, 그리고 Africa/Casablanca에서 사용되는 보다 이례적인 계절적 전환에 대한 테스트 커버리지도 추가했습니다.