Проблема Django icalendar dtstart datetime

#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 принятых формата даты и времени:

  1. Локальный или «плавающий», например: 19980118T230000
  2. Дата с указанием времени UTC, например: 19980119T070000Z и
  3. Дата с привязкой к местному времени и часовому поясу, например: 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»)