Как получить дату в нужном формате?
Получаю дату в функции:
startdate = datetime.strptime(request.POST['startdate'], '%d.%m.%Y')
enddate = datetime.strptime(request.POST['enddate'], '%d.%m.%Y')
print(startdate)
print(enddate)
В итоге получаю:
2021-04-30 00:00:00
2021-04-28 00:00:00
А должен получать:
30.04.2021
28.04.2021
В чем проблема и как получить данную дату в нужном формате?
Ответы (1 шт):
Функция datetime.strptime() парсит строку с датой/временем и возвращает объект типа datetime.datetime. При попытке вывести его на печать при помощи функции print(startdate) сначала вызывается метод startdate.__str__(), который по умолчанию преобразует datetime.datetime объект в строку используя формат 'Y%-%m-%d %H:%M:%S'. Поэтому вы получаете вывод в этом формате.
Пример:
In [231]: startdate = datetime.strptime('25.05.2021', '%d.%m.%Y')
In [232]: print(startdate)
2021-05-25 00:00:00
In [233]: startdate.__str__()
Out[233]: '2021-05-25 00:00:00'
In [234]: startdate
Out[234]: datetime.datetime(2021, 5, 25, 0, 0)
In [235]: startdate.__repr__()
Out[235]: 'datetime.datetime(2021, 5, 25, 0, 0)'
Для того чтобы преобразовать объект datetime.datetime в строку нужного формата можно воспользоваться методом datetime.strftime():
In [236]: startdate.strftime("%d.%m.%Y")
Out[236]: '25.05.2021'
или воспользоваться продвинутым форматированием строк (f-string):
In [240]: f"{startdate:%d.%m.%Y}"
Out[240]: '25.05.2021'
или обычным форматированием:
In [242]: "{:%d.%m.%Y}".format(startdate)
Out[242]: '25.05.2021'
UPD: метод qsstats.time_series(), о котором вы ничего не сказали в вопросе ожидает в качестве входных параметров объекты типа datetime.datetime:
values = qsstats.time_series(startdate, enddate)