因此,我正在使用用户输入的日期在Python 3.7.4中工作,该日期由另一个程序以字典格式存储在变量中。这些可能是过去的任何日期。例如,2019年11月6日看起来像这样:
{'Select start date': datetime.datetime(2019, 11, 6, 0, 0)}
我不在乎项目标签,但是我想将此字典日期转换为2019年11月6日的格式(我知道是strftime('%d %b %Y')
),但我不确定如何制作了解上面的内容是一个datetime对象,并在它实际上是一个字典对象时对其进行转换,并且不会引发错误。
我在这里已经阅读了很多,但是这里几乎所有的问题都只是看今天的日期(所以使用datetime.datetime.now()
)或特定的日期,而不是用户输入的可能有所不同的日期,并住在字典中。我已经看过很多这样的东西:
import datetime
d = datetime.datetime(2019, 11, 06, 0, 0, 0, 000000)
d.strftime("%a %b %d %Y %H:%M:%S %z")
...但在这种情况下似乎并不适用。由于字典格式,诸如strftime
和strptime
之类的命令似乎不起作用,并且我无法使用上述静态示例,因为要转换的实际日期并不总是相同。我如何才能在不使用字符串操作的情况下进行一些漫长的工作而使这项工作呢?我觉得我确实缺少解决这个问题的简单方法。
代码示例(无效):
import datetime
dic = {'Select start date': datetime.datetime(2019, 11, 7, 0, 0)}
for key, value in dic.items():
d = datetime.datetime(value)
d.strftime("%d %b %Y")
产生错误:
TypeError: an integer is required (got type datetime.datetime)
答案 0 :(得分:1)
我现在知道发生了什么。第d = datetime.datetime(value)
行是问题所在,您正在将datetime对象传递给datetime.datetime()
方法,这就是为什么要得到valueError的原因。这是不必要的,因为您已经从字典中获取了一个datetime对象,因此没有理由构造一个新的对象。这是固定代码:
import datetime
dic = {'Select start date': datetime.datetime(2019, 11, 7, 0, 0)}
for key, datetime_obj in dic.items():
datetime_str = datetime_obj.strftime("%d %b %Y")
print(datetime_str)
调试此问题的简单方法是使用type()
。例如:
for key, value in dic.items():
print(type(value))
将为您提供<class
datetime.datetime >
。在documentation中查找datetime.datetime()会告诉您该方法仅接受整数。