I use feedparser to get RSS feeds. Here is my code:
>>> import datetime >>> import time >>> import feedparser >>> d=feedparser.parse("http://.../rss.xml") >>> datetimee_rss = d.entries[0].published_parsed >>> datetimee_rss time.struct_time(tm_year=2015, tm_mon=5, tm_mday=8, tm_hour=16, tm_min=57, tm_sec=39, tm_wday=4, tm_yday=128, tm_isdst=0) >>> datetime.datetime.fromtimestamp(time.mktime(datetimee_rss)) datetime.datetime(2015, 5, 8, 17, 57, 39)
In my time zone (FR), the actual date is May, 8th, 2015 18:57 .
In RSS XML format, the value is <pubDate>Fri, 08 May 2015 18:57:39 +0200</pubDate>
When I parse it into datetime, I got 2015, 5, 8, 17, 57, 39 .
How to have 2015, 5, 8, 18, 57, 39 without dirty hacking, but simply by setting the correct time zone?
EDIT:
Performing:
>>> from pytz import timezone >>> datetime.datetime.fromtimestamp(time.mktime(datetimee_rss),tz=timezone('Euro pe/Paris')) datetime.datetime(2015, 5, 8, 17, 57, 39, tzinfo=<DstTzInfo 'Europe/Paris' CEST+2:00:00 DST>)
I have something nicer, however it doesn't seem to work in the rest of the script, I got a lot of TypeError: can't compare offset-naive and offset-aware datetimes errors TypeError: can't compare offset-naive and offset-aware datetimes .