여기 에서 찾은 예제를 기반으로 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 "---"
내 Google 캘린더에서 제목과 시작일과 종료일을 가져 오는 중입니다. 이것은 작동하고 출력은 다음과 같습니다.
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'>
---
...
보시다시피 시작 및 종료 날짜는 datetime.datetime
또는 유형이 될 수 있습니다 datetime.date
. 그것은 내가 구글 캘린더에 2 일 동안 (다음은 a datetime.date
) 항목이 있는지 또는 3 시간 동안 (그 다음에는 datetime.datetime
. 나는 오늘과 다음 4 개의 날짜 / 날짜 시간 만 인쇄 해야하는지 여부에 따라 다릅니다 . 날짜와 날짜 시간을 비교하는 데 문제가있어서 (불가능하게 보임) 실패했습니다. 데이터 유형을 보존하면서 날짜 시간과 날짜를 어떻게 비교할 수 있습니까? "캐스트"해야 할 경우 괜찮습니다. "오늘 + 4 주"를 인쇄 할 수 없었고 "4 주"만 인쇄했습니다.
비교를 위해 공통 유형으로 변환해야합니다. datetime과 date 모두 날짜가 공통이므로-> 날짜 유형을 변환하는 것이 좋습니다. datetime에서 date ()를 추출하십시오. 예를 들면 :
>>> import datetime
>>> datetime.date(2014, 2, 22) == datetime.datetime.now().date()
True
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다