الإصدار: Discourse 2026.1.5 (ESR)، إضافة discourse-calendar
ملخص
تظهر الأحداث الجديدة التي تم إنشاؤها بـ منطقة زمنية محددة (timezone="Europe/Berlin" و showLocalTime="true") وقتاً خاطئاً بزيادة +1 ساعة عند تنزيل ملف .ics واستيراده في Outlook (Windows). الوقت صحيح داخل المنتدى نفسه. تتأثر الأحداث الجديدة فقط، أي الاستيراد عبر ملف .ics.
إعادة إنتاج المشكلة
- إنشاء حدث (اليوم، في وقت التوقيت الصيفي CEST/UTC+2): 5:00 مساءً – 7:15 مساءً بتوقيت برلين.
[event start="2026-08-11 17:00" status="public" name="testevent 2" timezone="Europe/Berlin" showLocalTime="true" end="2026-08-11 19:15"]
[/event]
- “إضافة إلى التقويم” → تنزيل ملف
.ics. - استيراد الملف إلى Outlook.
المتوقع: 11.08.2026، 17:00 – 19:15
الفعلي: 11.08.2026، 18:00 – 20:15 (+1 ساعة)
محتوى ICS (الذات صلة):
DTSTART;TZID=Europe/Berlin:20260811T170000
DTEND;TZID=Europe/Berlin:20260811T191500
(لا يحتوي الملف على كتلة VTIMEZONE لـ Europe/Berlin.)
التحليل / السبب المشتبه به
يحدد التصدير الوقت محلياً باستخدام TZID=Europe/Berlin (اسم IANA) بدلاً من التوقيت العالمي المنسق (...Z). لا يفهم Outlook أسماء المناطق الزمنية من IANA (فهو يستخدم معرفات Windows مثل “W. Europe Standard Time”)، وغياب تعريف VTIMEZONE يجعله يعتمد على الإزاحة الثابتة UTC+1 (CET/الوقت الشتوي). خلال الوقت الصيفي (CEST = UTC+2) يؤدي هذا إلى زيادة +1 ساعة بالضبط. التحقق المتقاطع: استيراد نفس الملف إلى Google Calendar (الذي يفهم مناطق IANA بشكل أصلي) يعرض الوقت الصحيح 17:00.
اقتراح: يجب أن يستخدم تصدير ICS إما طوابع زمنية بالتوقيت العالمي المنسق مع Z أو يولد كتلة VTIMEZONE كاملة تتضمن قواعد التوقيت الصيفي (انظر أيضاً النقاش حول الامتثال لمواصفات ICS في الموقع غير متاح في تصدير ICS الكامل).
ملاحظة إضافية: عند إنشاء نفس الحدث بدون timezone=/showLocalTime، يستخدم ملف .ics المُصدّر التوقيت العالمي المنسق ويظهر Outlook +2 ساعات (بما أن 17:00 بالتوقيت العالمي = 19:00 بتوقيت CEST). هذا هو السلوك الموثق للتوقيت العالمي المنسق، لكنه يوضح أيضاً أن التعامل مع المناطق الزمنية حول تصدير ICS محير للمستخدمين الذين يتوقعون أوقاتاً محلية.