Собсна вопрос в заголовке - как корректно перевести строку содержащую дату в объект datetime ?
Строку получаю с сайта: (если имеет значение то использую bootstrap 5)
Строка прилетает мне в таком виде: '2021-07-05'
Я могу спокойно её перевести в дату таким образом: datetime.datetime.strptime('2021-07-05', '%Y-%m-%d')
но вот о чём задумался:
1. Если строка будет вот такого вида: '2021 07 05' то я уже получаю ошибку. То есть разделитель отличный от тире.
2. Сейчас я знаю что у меня указан год потом месяц, потом день. А если другой пользователь использует другой формат даты ? Как мне здесь понять '2021-07-05' где месяц? наверное должен как то прилетать некий флаг со страницы ?
п.с. подозреваю что нужно использовать js, но не хочется городить огород там где он не нужен. Может самое простое решение это дать пользователю три отдельных списка с месяцем, годом и днём ?
Миша Тарасов, правильно записать дату мне надо в БД. Если бы просто отобразить дату то я бы вообще не переживал, а так мне надо рассчитать кол-во дней от текущей даты до указанной.
Pavel Shvedov, Думаю не вариант т.к. я просто отображаю элемент календарь, а он уже формирует строку и отдаёт её мне в зависимости от локальных установок.
пока сделал так: дал 3 отдельных списка с годом, месяцем и днём. Не сильно красиво, зато однозначно и быстро )
Desead во-первых подключите в шаблоне вот эту библиотеку cleave.js она будет помогать формировать дату в правильном формате. Во-вторых, на бекэнде вам нужно использовать формы с валидацией формата даты, если дата в не верном формате то не выполняйте дальнейшие действия, а показывайте ошибку пользователю. Но как правило первое условие решает эту проблему
Благодарю за помощь, но сейчас уже остановился на варианте где показал клиенту 3 списка с выбором года, месяца и дня. В принципе при таком подходе массы проблем избегаю, но эту библиотеку попробую в другом проекте.
Дмитрий, Мне пришлось сделать все эти проверки. И если человек укажет дату ранее текущей и больше максимальной. А 31 февраля и високосный год я закинул просто в try except.