| 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): |