TypeError:描述符“ strftime”需要一个“ datetime.date”对象,但收到一个“ str”

时间:2018-09-11 15:04:02

标签: python datetime

我正在尝试从泡菜文件中获取日期并将日期添加一天。打印语句返回 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:/用户/ Arvinth   初始化中的Kumar / Downloads / strtsmrt-master / gendata.py“,第81行       fetchData()文件,“ f:\ C:/用户/ Arvinth Kumar / Downloads / strtsmrt-master / gendata.py”,第15行       news.init()文件“ C:\ Users \ Arvinth Kumar \ Downloads \ strtsmrt-master \ news.py”,第58行,初始化       getNews()文件getNews中的第38行,“ C:\ Users \ Arvinth Kumar \ Downloads \ strtsmrt-master \ news.py”       dt_obj = datetime.datetime.strftime(dataHist ['last_updated'],'%Y-%m-%d')TypeError:描述符'strftime'需要一个   'datetime.date'对象,但收到一个'str'

请帮助!

2 个答案:

答案 0 :(得分:2)

有一个演示供您显示 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()

答案 1 :(得分:1)

dt_obj = datetime.datetime.strftime(dataHist['last_updated'], '%Y-%m-%d')

上面的这段代码从日期时间创建了一个字符串,因此无论如何您都必须先添加时间,然后再转换为字符串。

对于反向,您应该使用strptime()而不是strftime(),这样您将从字符串中获取日期时间。