TypeError: дескриптор 'strftime' требует объект 'datetime.date', но получил 'str' - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь получить дату из файла маринада и добавить один день к дате.Оператор печати возвращает 2018-09-10 .Затем получаю ошибку 'strftime' requires a 'datetime.date' object but received a 'str' на datetime.datetime.strftime(dataHist['last_updated'], '%Y-%m-%d') строке

Import pickle

dataHistFile = open('dat.pkl', 'rb')
dataHist = pickle.load(dataHistFile, encoding='bytes')
print(dataHist['last_updated'])
dt_obj = datetime.datetime.strftime(dataHist['last_updated'], '%Y-%m-%d')
date = dt_obj + datetime.timedelta(days=1)

2018-09-10
Файл "C: / Users / Arvinth Kumar / Загрузки / strtsmrt-master / gendata.py», строка 81, в файле init fetchData ()« C: / Users / Arvinth Kumar / Downloads / strtsmrt-master / gendata.py », строка 15, в файле fetchData news.init ()« C: \ Users \ Arvinth Kumar »\ Downloads \ strtsmrt-master \ news.py ", строка 58, в файле инициализации getNews ()" C: \ Users \ Arvinth Kumar \ Downloads \ strtsmrt-master \ news.py ", строка 38, в getNews dt_obj = datetime.datetime.strftime (dataHist ['last_updated'], '% Y-% m-% d') TypeError: дескриптор 'strftime' требует объект 'datetime.date', но получил 'str'

Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Демонстрация для вас, чтобы показать разницу между strptime и strftime .

import datetime


def datetime_datetime_strptime():
    _datetime = datetime.datetime.strptime(
        "2018-09-09 18:47:30",
        "%Y-%m-%d %H:%M:%S"
    )
    print(str(_datetime))


def datetime_datetime_strftime():
    now = datetime.datetime.now()
    print(now.strftime("%Y/%m/%d"))   # 2018/09/09
    print(now.__format__("%Y/%m/%d")) # 2018/09/09


if __name__ == '__main__':
    datetime_datetime_strftime()
    datetime_datetime_strptime()
0 голосов
/ 11 сентября 2018
dt_obj = datetime.datetime.strftime(dataHist['last_updated'], '%Y-%m-%d')

Этот фрагмент кода выше создает строку из даты и времени, поэтому в любом случае вам сначала нужно будет добавить время, а затем преобразовать в строку.

Для обратного следует использовать strptime() вместо strftime(), таким образом вы получите datetime из строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...