【问题标题】:TypeError: descriptor 'strftime' requires a 'datetime.date' object but received a 'Text'TypeError:描述符“strftime”需要一个“datetime.date”对象但收到一个“文本”
【发布时间】:2015-05-07 21:55:44
【问题描述】:

我有一个变量testeddate,它的日期为文本格式,如 2015 年 4 月 25 日。我正在尝试将其转换为%Y-%m-%d %H:%M:%S,如下所示:

dt_str = datetime.strftime(testeddate,'%Y-%m-%d %H:%M:%S')

但我遇到了这个错误:

TypeError: descriptor 'strftime' requires a 'datetime.date' object but received a 'Text'

我该如何解决这个问题?

【问题讨论】:

  • datetime.strftime 不是静态方法,您需要在实际的datetime 对象上调用它:docs.python.org/2/library/datetime.html#datetime.date.strftime
  • @jonny - 这意味着我应该使用类似 datetime.datetime.strftime 的东西
  • @user2125827:首先,是的,从技术上讲,你可以datetime.datetime.strftime(dt, fmt)而不是dt.strftime(fmt),就像你可以写str.encode(s, encoding)而不是s.encode(encoding)一样。但写dt.strftime(fmt) 更惯用、更易读、更简洁。而且,更重要的是,您实际上并没有datetime,您似乎混淆了strftimef for format)和strptime(@987654340 @ 用于 解析);他们是对立的。

标签: python datetime


【解决方案1】:

你有一个Text 对象。 strftime 函数需要一个日期时间对象。下面的代码使用strptimeText 转换为datetime 的中间步骤

import datetime
testeddate = '4/25/2015'
dt_obj = datetime.datetime.strptime(testeddate,'%m/%d/%Y')

此时,dt_obj 是一个日期时间对象。这意味着我们可以轻松地将其转换为任何格式的字符串。在您的特定情况下:

dt_str = datetime.datetime.strftime(dt_obj,'%Y-%m-%d %H:%M:%S')

dt_str 现在是:

'2015-04-25 00:00:00'

【讨论】:

  • 或者可以只使用:dt_str = datetime.strptime(testeddate,'%m/%d/%Y').strftime('%Y-%m-%d %H:%M: %S') ,假设导入为:from datetime import datetime
  • 我在dt_obj = datetime.datetime.strptime(testeddate,'%m/%d/%Y') 行收到错误AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
  • 你的进口声明是什么?如果你只是去import datetime,它会像我一样工作。如果你正在做from datetime import datetime 将该行更改为dt_obj = datetime.strptime(testeddate,'%m/%d/%Y')
  • 您将对象放在第一位,然后将格式和工作放在第二位。但是,我在其他任何地方都看到首先是格式,然后是对象strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()),而且我一直都遇到错误。我错过了什么?
【解决方案2】:

一个不太优雅的解决方案是直接操作字符串。

testeddate = '4/25/2015'
month, day, year = testeddate.split('/')
testeddate = '-'.join([year, month, day]) + ' 00:00:00'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多