#python #django #icalendar
#python #django #icalendar
Вопрос:
У меня есть форма в Django-python для программы событий. Я пытаюсь создать файл ics для событий с помощью icalendar, для этого я хочу получить значения ‘dtstart’ и ‘dtend’ из переменных ‘starttime’ и ‘endtime’ в форме, но я получаю код: неправильный формат даты и времени. У кого-нибудь есть какие-либо советы по решению этой проблемы?
ОШИБКА
elif not ical[15:]:
return datetime(*timetuple)
elif ical[15:16] == 'Z':
return pytz.utc.localize(datetime(*timetuple))
else:
raise ValueError(ical)
except:
raise ValueError('Wrong datetime format: %s' % ical) …
class vDuration(object):
"""Subclass of timedelta that renders itself in the iCalendar DURATION
format.
"""
код
def event(request, id=None):
instance = Event_cal()
if id:
instance = get_object_or_404(Event_cal, pk=id)
else:
instance = Event_cal()
form = EventForm(request.POST or None, instance=instance)
if request.POST and form.is_valid():
form.save()
startdate = request.POST.get('starttime')
endate = request.POST.get('endtime')
event = Event()
event.add('summary', 'My Summary')
event.add('dtstart', vDatetime.from_ical(startdate))
event.add('dtend', vDatetime.from_ical(endate))
Заранее спасибо, я изучаю python, поэтому у меня не так много опыта.
Комментарии:
1. Пожалуйста, опубликуйте фактическую ошибку.
2. Фактическая ошибка заключается в следующем: ошибка значения при / событии Неправильный формат даты и времени: 2020-10-07T22:28 Метод запроса: POST URL запроса: 127.0.0.1:8000 / событие Версия Django: 3.1.1 Тип исключения: ошибка значения Значение исключения: Неправильный формат даты и времени: 2020-10-07T22:28
Ответ №1:
Переформатируйте время даты в один из форматов RFC5545. Пожалуйста, ознакомьтесь с инструкциями по спецификациям RFC5545 для форматов даты и времени: https://www.rfc-editor.org/rfc/rfc5545#section-3.3.5 .
Существует 3 принятых формата даты и времени:
- Локальный или «плавающий», например: 19980118T230000
- Дата с указанием времени UTC, например: 19980119T070000Z и
- Дата с привязкой к местному времени и часовому поясу, например: TZID=America / New_York:19980119T020000
Комментарии:
1. Спасибо, @anmari, с вашим предложением я решил проблему. Я сделал следующее: 1. Я применил datetime.strptime к моей текущей дате-времени startdate = datetime.strptime(startdate, «%Y-%m-%dT%H:%M») 2. Я сформировал поле с одним из форматов RFC5545 startdate = startdate.strftime(«%Y%m%dT%H%M%S»)