python icalendar正确设置dtstart

问题描述 投票:1回答:3

我正在使用python和python软件包iCalendar设置脚本,将一堆曲棍球赛程表格式化为.ics文件。

设置时:

event.add('dtstart', game_datetime[i])
event.add('dtend', game_datetime[i]+timedelta(hours=i))

我在生成的.ics文件中得到以下内容:

DTSTART;VALUE=DATE-TIME:20141019T140500
DTEND;VALUE=DATE-TIME:20141019T160500

显然不理想;它似乎正在传递对象,而不是值。因此,当我尝试使用strftime()进行设置时,如下所示:

#event.add('dtstart', game_datetime[i].strftime('%Y%m%dT%H%M%SZ'))
#event.add('dtend', (game_datetime[i]+timedelta(hours=i)).strftime('%Y%m%dT%H%M%SZ'))

我收到以下错误:

File "D:\schedule_format.py", line 72, in <module>
event.add('dtstart', game_datetime[i].strftime('%Y%m%dT%H%M%SZ'))
File "C:\Python27\lib\site-packages\icalendar-3.9.dev0-py2.7.egg\icalendar\cal.py", line 171, in add
value = self._encode(name, value, parameters, encode)
File "C:\Python27\lib\site-packages\icalendar-3.9.dev0-py2.7.egg\icalendar\cal.py", line 123, in _encode
obj = klass(value)
File "C:\Python27\lib\site-packages\icalendar-3.9.dev0-py2.7.egg\icalendar\prop.py", line 276, in __init__
raise ValueError('You must use datetime, date, timedelta or time')
ValueError: You must use datetime, date, timedelta or time

显然,我应该使用datetime对象,但是显然我没有正确使用它?

python datetime icalendar rfc5545
3个回答
0
投票

我不知道您在game_datetime中拥有什么,但是我像您一样面对这个问题,并像这样将其用于日期类型属性,并且可以使用:]

from time import strftime,gmtime
from icalendar import Calendar,Parameters,Todo
import icalendar
from datetime import *

year = int(strftime("%Y", gmtime()))
month = int(strftime("%m", gmtime()))
day = int(strftime("%d", gmtime()))
hour = int(strftime("%H", gmtime()))
minute = int(strftime("%M", gmtime()))
second = int(strftime("%S", gmtime()))

temp = Todo()
temp.add('CREATED',datetime(year,month,day,hour,minute,second))

您应该将'CREATED'更改为所需的日期类型


0
投票

不太清楚您看到的问题是什么:


0
投票

您可以在python datetime对象上使用icalendar包的vDatetime函数

© www.soinside.com 2019 - 2024. All rights reserved.