.ics TZID и смещение не работает - PullRequest
0 голосов
/ 25 августа 2018

Я создаю простой файл .ics, и все выглядит хорошо.Однако, независимо от того, что я делаю с .ics, когда я открываю его на своем телефоне, он показывает неправильное время начала и окончания (+3 часа).

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
X-WR-TIMEZONE:Europe/Sofia
CALSCALE:GREGORIAN
BEGIN:VTIMEZONE
TZID:Europe/Sofia
TZOFFSETFROM:+0000
TZOFFSETTO:-0300
TZNAME:CET
END:VTIMEZONE
BEGIN:VEVENT
LOCATION:Some location
DESCRIPTION:Testing Description
DTSTART:20180825T120000Z
DTEND:20180825T141000Z
SUMMARY:This is a short summary
URL;VALUE=URI:www.someurl
DTSTAMP:20180825T155441Z
UID:5b8151913501c
END:VEVENT
END:VCALENDAR

Таким образом, вместо отображения времени начала 12Часы (20180825T120000Z) показывают 15:00. Странно то, что на самом деле не имеет значения, какой TZID я использую ... ничего не изменится.Смещение тоже не работает.

Есть идеи, в чем может быть проблема?

1 Ответ

0 голосов
/ 26 августа 2018

он делает абсолютно правильные вещи. Пожалуйста, обратитесь к спецификации RFC5545. https://tools.ietf.org/html/rfc5545#section-3.6.5. VTIMEZONE просто предоставляет определение часового пояса, то есть базовое смещение и любые изменения летнего времени и т. Д. Я подозреваю, что многие приложения могут использовать свои собственные определения И / ИЛИ определения, если они правильные, должны быть одинаковыми.

Итак, мы посмотрим, как вы решили представлять свои даты, то есть: Форма № 2 согласно https://tools.ietf.org/html/rfc5545#section-3.3.5, дате с временем UTC. Затем приложения календаря будут корректировать время UTC в DTSTART в соответствии с часовым поясом, для которого установлено приложение. Похоже, что ваше приложение настроено на часовой пояс, который смещен на 3 часа от UTC.

Если вы действительно хотите, чтобы дата была 12 часов вечера от вашего часового пояса, у вас есть выбор:

  • Форма № 1: плавающая или локальная дата-время 20180825T120000 (НЕТ Z). Оно будет отображаться как 12 в каждом часовом поясе (без настройки). Полезно для напоминаний в одно и то же время суток в местном месте.
  • Форма № 2: время UTC 20180825T090000Z (производящий код должен корректировать местное время с UTC + 3 до базового времени UTC)
  • Форма № 3: ДАТА С МЕСТНЫМ ВРЕМЕНЕМ И ВРЕМЕННОЙ ЗОННОЙ ССЫЛКОЙ. IE TZID: Европа / София: 20180825T120000. Приложения календаря преобразуют его в часовой пояс принимающего приложения и устройства календаря с учетом любого перехода на летнее время.
...