python日期时间和日期比较

python日期时间和日期比较,python,Python,根据我发现的示例,我想获取icalendar数据并对其进行处理。到目前为止,这是我的代码: from datetime import datetime, timedelta from icalendar import Calendar import urllib import time ics = urllib.urlopen('https://www.google.com/calendar/ical/xy/basic.ics').read() ical1 = Calendar.from_ic

根据我发现的示例,我想获取icalendar数据并对其进行处理。到目前为止,这是我的代码:

from datetime import datetime, timedelta
from icalendar import Calendar
import urllib
import time

ics = urllib.urlopen('https://www.google.com/calendar/ical/xy/basic.ics').read()
ical1 = Calendar.from_ical(ics)
for vevent in ical1.subcomponents:
    if vevent.name == "VEVENT":
        title = str(vevent.get('SUMMARY').encode('utf-8'))
        start = vevent.get('DTSTART').dt   # datetime
        end = vevent.get('DTEND').dt       # datetime

        print title
        print start
        print end
        print type(start)
        print "---"
它正在从我的谷歌日历中获取标题和开始+结束日期。此操作和输出如下所示:

This is a Test Title
2012-12-20 15:00:00+00:00
2012-12-20 18:00:00+00:00
<type 'datetime.datetime'>
---
Another Title
2012-12-10
2012-12-11
<type 'datetime.date'>
---
    ...
这是一个测试标题
2012-12-20 15:00:00+00:00
2012-12-20 18:00:00+00:00
---
另一个标题
2012-12-10
2012-12-11
---
...

如您所见,开始日期和结束日期的类型可以是
datetime.datetime
datetime.date
。这取决于我是否在google Calendar中有一个条目持续2整天(然后是
datetime.date
)或3小时(然后是
datetime.datetime
),我只需要打印今天和接下来4周的日期/日期时间。我在比较日期和日期时间时遇到问题(这似乎不可能)所以我没能做到这一点。我如何比较日期时间和保存数据类型的日期?如果我需要“转换”它们,没关系。我无法打印“今天+4周”,只有“4周”。

Datetime对象可以通过调用date来返回适当的日期对象:
start.date()
然后可以将其与另一个日期对象进行比较:
start.date()
您需要转换为通用类型进行比较。由于datetime和date都有相同的日期,因此转换->日期类型是有意义的。只需提取日期()从日期时间开始。例如:

>>> import datetime
>>> datetime.date(2014, 2, 22) == datetime.datetime.now().date()
True