Я пишу продукт Plone, который берет iCalendar , извлекает его и создает типы событий Plone. У меня все работает отлично, за исключением того, что для половины дат года отметки времени отключены на час.
Мой фид iCalendar передает их как метки времени UTC:
DTSTART; ЗНАЧЕНИЕ = ДАТА: 20110812T130000Z должно быть 9 утра в часовом поясе Америки / Нью-Йорка
DTEND; VALUE = DATE: 20110812T160000Z должно быть 12:00 в часовом поясе Америки / Нью-Йорка
Те работают отлично. Это не:
DTSTART; ЗНАЧЕНИЕ = ДАТА: 20111225T175525Z должен быть 13:55, но показывается как 12:55.
DTEND; VALUE = DATE: 20111225T215525Z должно быть 5:55 вечера, но отображается как 4:55 вечера * 10101 *
От базы данных, которая генерирует канал iCalendar, до генератора iCalendar, до фактических значений, хранящихся в Zope, все правильно. Но Plone отображает неверное местное время на страницах с подробностями события.
Я попытался установить "TZ America / New_York" в моей сборке, я попытался установить системные часы на сервере Zope заранее, чтобы посмотреть, произойдет ли преобразование магическим образом "после того, как мы вернемся в EST". Не повезло.
Вот несколько примеров, которые могут проиллюстрировать проблему:
Правильно отображаемое событие, которое происходит в EDT:
BEGIN:VEVENT
DESCRIPTION:Flyer Fridays give you the opportunity to hear from professors
in Communication Sciences & Disorders\, Education\, Management\, Nursing\
, Physical Therapy\, Occupational Therapy or Visual & Performing Arts. \n
\nFaculty sessions begin at 9:15am (PLEASE CHOOSE ONE)\, followed by a 10a
m campus tour and an 11am Freshmen information session. After the day's e
vents\, you're invited to join the Admissions staff for lunch.
DTEND;VALUE=DATE:20110812T160000Z
DTSTART;VALUE=DATE:20110812T130000Z
LOCATION:Nazareth College
SUMMARY:Flyer Friday - Management Info Session
UID:ug-flyerfriday-164
END:VEVENT
И как оно хранится в Zope:
>>> app.Plone.events['ug-flyerfriday-164'].startDate
DateTime('2011/08/12 13:00:00 GMT+0')
Неверно отображаемое событие, которое происходит в EST:
BEGIN:VEVENT
DESCRIPTION:Fun with TZINFO Flyer Fridays give you the opportunity to hear
from professors in Communication Sciences & Disorders\, Education\, Manag
ement\, Nursing\, Physical Therapy\, Occupational Therapy or Visual & Perf
orming Arts. \n\nFaculty sessions begin at 9:15am (PLEASE CHOOSE ONE)\, f
ollowed by a 10am campus tour and an 11am Freshmen information session. A
fter the day's events\, you're invited to join the Admissions staff for lu
nch.
DTEND;VALUE=DATE:20111225T215525Z
DTSTART;VALUE=DATE:20111225T175525Z
LOCATION:Nazareth College
SUMMARY:Flyer Friday - Timezone Info Session
UID:ug-flyerfriday-172
END:VEVENT
И вы можете видеть, что он хранится в Zope с UTC, поэтому проблема только в том, как он отображается:
>>> app.Plone.events['ug-flyerfriday-172'].startDate
DateTime('2011/12/25 17:55:25 GMT+0')