我正在编写一个Plone产品,它接受iCalendar,将其拉入,并创建Plone事件类型。我已经完美地完成了所有工作,除了在一年的一半时间里,时间戳已经过了一个小时。
我的iCalendar Feed将这些传递为UTC时间戳:
DTSTART; VALUE = DATE:20110812T130000Z应该是美国/纽约时区的上午9点 DTEND; VALUE = DATE:20110812T160000Z在美国/纽约时区应该是12noon
那些工作正常。这些不是:
DTSTART; VALUE = DATE:20111225T175525Z应该是1:55 pm,但它显示为下午12:55 DTEND; VALUE = DATE:20111225T215525Z应该是下午5:55,但它显示为下午4:55
从生成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
你可以看到它用UTC存储在Zope中,所以问题只在于它的显示方式:
>>> app.Plone.events['ug-flyerfriday-172'].startDate
DateTime('2011/12/25 17:55:25 GMT+0')
答案 0 :(得分:2)
您正在尝试夏令时。 当您更改日期时会出现这种情况。
检查其中一个错误的日期:
DTSTART;VALUE=DATE:20111225T175525Z should be 1:55pm, but it's showing as 12:55pm 并阅读传奇:
夏令时不有效 在GMT日光的这个日期/时间
节省时间不对此有效 日期/时间在America / New_York
然后查看其中一个无问题日期:
DTSTART;VALUE=DATE:20110812T130000Z should be 9am in the America/New_York timezone有这个传说:
夏令时不有效 在GMT日光的这个日期/时间
节省时间对此有效 日期/时间在America / New_York
在这里您可以看到America / New_York时区的每日保存时间详情: http://www.timezoneconverter.com/cgi-bin/zoneinfo.tzc?s=default&tz=America/New_York