Календарь: в файле ICS отсутствует информация о часовом поясе!

Я видел другой пост, где почему-то просили написать сюда о календаре, но мне кажется, что Discourse тут ни при чём. Однако наши посты закрываются через 7 дней, так что YOLO!

Посмотрев спецификацию файла .ics, я не совсем понимаю, какой именно нам нужен, но у нас отсутствуют следующие поля… это:

  1. X-WR-TIMEZONE
  2. TZID
  3. X-LIC-LOCATION

По-моему, нужно брать настройку часового пояса для отряда и добавлять X-WR-TIMEZONE, чтобы она совпадала… При импорте из Google он предполагает ваш локальный часовой пояс, но в Godaddy я, черт возьми, не могу найти, где это настроить… И раньше это работало, потому что, полагаю, старые календари .ics содержали информацию о часовом поясе.

Пример с правильной информацией о часовом поясе… Установлены X-WR-TIMEZONE и X-LIC-LOCATION, а у события есть DTSTART;TZID=“America/Los_Angeles”:20160206T074400 и DTEND;TZID=“America/Los_Angeles”:20160206T084400.

Минимальным исправлением, на мой взгляд, будет добавление X-WR-TIMEZONE и X-LIC-LOCATION, а правильный стандарт должен позволять каждому событию иметь собственный часовой пояс начала и окончания… Я уверен, что вы, ребята, летаете на самолётах, и при перемещении настройки часового пояса будут корректироваться, если они правильно установлены в календаре.

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 19.0 MIMEDIR//EN
VERSION:2.0
X-WR-TIMEZONE:America/Los_Angeles
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:America/Los_Angeles
X-LIC-LOCATION:America/Los_Angeles
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
TZNAME:PDT
DTSTART:19700308T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
TZNAME:PST
DTSTART:19701101T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
SUMMARY:Appointment
LOCATION:Pune
DESCRIPTION:Your appointment Details:\n\nPatient Details:Kou Kul\nKeven\n\nAppointment Type:Counselling (30 min)\n\nThanks.
DTSTART;TZID="America/Los_Angeles":20160206T074400
DTEND;TZID="America/Los_Angeles":20160206T084400
PRIORITY:5
STATUS:CONFIRMED
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

tephen_Hornak
ChristopherCamacho
Matt.Johnson
jacobfetzer

4 лайка

Есть какие-то новости по этому вопросу? В ICS-файле по-прежнему отсутствует информация о часовом поясе. Поэтому, когда пользователи импортируют ICS-файл из Discourse в свой календарь, время отображается неверно.

Сгенерированный нами файл ics соответствует спецификации iCalendar. В частности, для времени мы генерируем временные метки в формате UTC (исходный код 1, исходный код 2), к которым добавляется суффикс Z. Это соответствует следующим требованиям:

ФОРМА #2: ВРЕМЯ UTC

      Время UTC, или абсолютное время, идентифицируется суффиксом в виде
      заглавной латинской буквы Z (указатель UTC), добавляемым к значению времени.
      Например, следующее значение представляет 07:00 утра по UTC:

       070000Z

      Параметр свойства "TZID" НЕ ДОЛЖЕН применяться к свойствам ВРЕМЕНИ,
      значения которых указаны в UTC.

Другие свойства, такие как X-WR-TIMEZONE и X-LIC-LOCATION, не входят в эту спецификацию.

Продолжая тему из исходного сообщения (OP), я заметил, что другие пользователи отмечали в связанной теме, что эта проблема специфична для календарного просмотра GoDaddy. Возможно, это связано с тем, как она обрабатывается в их адаптере при импорте файлов iCal. Замечали ли вы эту проблему с другими календарями?

1 лайк

Идентификатор часового пояса TZID является частью этой спецификации RFC 5545 - Internet Calendaring and Scheduling Core Object Specification (iCalendar)

Да, я понимаю эту часть. Это также указано в той же спецификации:

Параметр свойства "TZID" НЕ ДОЛЖЕН применяться к свойствам DATE
и к свойствам DATE-TIME или TIME, временные значения которых
указаны в UTC.

Наши временные метки указаны в UTC, следовательно, к ним не должно применяться свойство TZID.