#python #django #datetime
#python #django #дата и время
Вопрос:
Я пытаюсь сохранить свои значения даты и времени из datetimepicker в модель Django. Я получаю ошибку формата времени.
Это ошибка: временные данные ‘2020-09-17T10:05’ не соответствуют формату «гггг-мм-дд’Т’Ч: ММ»
Мой код:
name = request.POST["name"]
date1 = request.POST["start"]
startdate = datetime.strptime(date1, "yyyy-mm-dd'T'HH:MM")
start = startdate.isoformat()
date2 = request.POST["end"]
enddate = datetime.strptime(date2, "yyyy-mm-dd'T'HH:MM")
end = enddate.isoformat()
e = Events(name=name, start=start, end=end)
e.save();
Обновить:
Я не уверен, что это e.save(), но вот ошибка, которую я получаю. Нигде не говорится, что ошибка находится в форме.
Обновление (решение):
name = request.POST["name"]
date1 = request.POST["start"]
startdate = datetime.strptime(date1, "%Y-%m-%dT%H:%M")
start = startdate.isoformat()
date2 = request.POST["end"]
if not date2:
end = None
else:
enddate = datetime.strptime(date2, "%Y-%m-%dT%H:%M")
end = enddate.isoformat()
e = Events(name=name, start=start, end=end)
e.save();
Ответ №1:
Похоже, вы полностью изобрели токены, которые вы использовали в строке форматирования в strptime
функции. Они не имеют никакого отношения к тому, для чего предназначена эта функция. Я не уверен, откуда у вас появилась идея для них — возможно, вы перепутали ее с функцией из другого языка программирования?
Правильные токены, соответствующие годам, месяцам и т. Д., Четко перечислены в официальной документации по адресу: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes . Эта ссылка также содержит полезные примеры: https://www.programiz.com/python-programming/datetime/strptime
Читая из них, для вашего случая правильная строка должна быть:
"%Y-%m-%dT%H:%M"
Таким образом, код для анализа даты начала, например, должен быть:
startdate = datetime.strptime(date1, "%Y-%m-%dT%H:%M")
Демонстрация: https://onlinegdb.com/HyZH8r8Bw
Комментарии:
1. Спасибо за ваш ответ. Я уже пробовал этот метод раньше. перепроверил его, но он по-прежнему выдает ошибку в формате времени. Ошибка: данные о времени » не соответствуют формату ‘%Y-%m-%dT%H:%M’
2. Это мои данные date1: 2020-09-17T10:05
3. Я протестировал его с помощью действительно простого скрипта, он работает без ошибок:
from datetime import datetime date1 = '2020-09-17T10:05'; startdate = datetime.strptime(date1, "%Y-%m-%dT%H:%M")
4. Я использую формат 12 часов, может ли это быть проблемой? Я попробовал %I вместо%H, но все та же ошибка
5. Где вы используете формат 12 часов? Ваша строка даты — это строка ISO8601. Оно должно быть в формате 24 часа. Ваша строка не содержит ничего, указывающего, является ли время AM или PM, поэтому оно всегда будет интерпретироваться как 24 часа