30 lines
1.3 KiB
Diff
30 lines
1.3 KiB
Diff
From http://codespeak.net/pipermail/icalendar-dev/2009-July/000139.html:
|
|
|
|
SUMMARY: The encoding mechanism of vDatetime handles tzinfo fields
|
|
incorrectly (specifically with respect to daylight savings time).
|
|
Attached is a simple patch that makes it work.
|
|
|
|
DETAILS: Currently vDatetime.ical() tries to compute the utcoffset of
|
|
the tzinfo, and then subtract that offset. This approach is valid,
|
|
but the computation of the utcoffset is wrong, because it's done relative
|
|
to datetime.now() instead of the actual datetime object (self.dt)
|
|
to be converted. This is an issue for timezones whose utcoffset varies
|
|
throughout the year, e.g., from daylight savings time.
|
|
Replacing datetime.now() with self.dt would fix the code,
|
|
but I opted to use the builtin 'asttimezone' method
|
|
because it's slightly simpler.
|
|
|
|
Submitted by Erik Demaine.
|
|
===================================================================
|
|
--- src/icalendar/prop.py.orig 2009-12-14 08:43:50.000000000 -0500
|
|
+++ src/icalendar/prop.py 2009-12-20 12:41:28.000000000 -0500
|
|
@@ -309,8 +309,7 @@
|
|
|
|
def ical(self):
|
|
if self.dt.tzinfo:
|
|
- utc_time = self.dt - self.dt.tzinfo.utcoffset(datetime.now())
|
|
- return utc_time.strftime("%Y%m%dT%H%M%SZ")
|
|
+ return self.dt.astimezone (UTC).strftime("%Y%m%dT%H%M%SZ")
|
|
return self.dt.strftime("%Y%m%dT%H%M%S")
|
|
|
|
def from_ical(ical):
|