#python #selenium
#python #selenium
Вопрос:
Я написал код, как показано ниже:
from datetime import datetime
datetime_str = '19/09/2021'
datetime_object = datetime.strptime(datetime_str, '%d/%m/%Y').date()
print(type(datetime_object))
print(datetime_object)
Я получаю вывод, как показано ниже:
(venv) D:pythonProjectpractice>py test1.py
<class 'datetime.date'>
2021-09-19
Здесь формат даты меняется на 2021-09-19
Мне нужен тот же формат, что и ’19/09/2021′ в типе даты
Я попытался изменить формат, как показано ниже:
newformat = datetime_object.strftime('%d/%m/%Y')
print(newformat)
print(type(newformat))
Но newformat имеет строковый тип. Не могли бы вы, пожалуйста, помочь мне решить эту проблему?
Комментарии:
1. внутренний способ, которым объект datetime хранит дату, для вас не имеет значения.
strftime
возвращает строковое представление объекта datetime в соответствии с заданным вами форматированием, поэтомуnewformat
это строка
Ответ №1:
Эта строка будет делать:
print(datetime_object.strftime("%d/%m/%Y "))
Ответ №2:
На самом print(datetime_object)
деле вызывает datetime.datetime.__str__()
функцию. Она определена в классе datetime.datetime (исходный код). По умолчанию он возвращает isoformat.
Если вы хотите изменить print(datetime_object)
, вы можете использовать наследование для создания нового класса, производного от интересующего класса, а затем переопределить __str__
метод. Затем вы определяете свой datetime_object, используя свой новый класс.
class mydatetime(datetime):
def __str__(self):
return self.strftime('%d/%m/%Y')
mydatetime_object = mydatetime.strptime(datetime_str, '%d/%m/%Y')
print(type(mydatetime_object))
print(mydatetime_object)
Вы можете ожидать, что получите:
<class '__main__.mydatetime'>
19/09/2021
Функция strftime()
преобразует объект datetime.datetime в строку, поэтому вы получаете строку вместо объекта datetime.datetime.