AttributeError:模块“datetime”没有属性“strftime”

2024-05-01 21:59:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直试图用日期时间来计算今天的年、月和日。所以,我使用import datetime导入了datetime模块。但是,我还需要timedelta命令,所以我使用了from datetime import timedelta。我也在使用strftime,我相信它来自from datetime import datetime。但是,我不能同时运行所有这些。

那么,如何使用datetime模块、strftime和timedelta呢?感谢您的帮助!


Tags: 模块fromimport命令datetime时间timedeltastrftime
2条回答

一旦考虑到datetime同时是包名日期时间内的模块名,使用datetime就会变得非常混乱。

datetime有许多不同的模块,即:

datetime模块处理datetime对象。

date模块处理日期对象。

time模块处理时间对象。

timedelta模块处理timedelta对象。

在您的例子中,当您说import datetime时,您真正指的是datetime而不是模块。

strftimedatetime对象的方法(即在datetime模块下)

因此,有两种方法可以实现这一点。

如果使用import datetime,则必须指定包、模块和方法,如下所示:

import datetime

today = datetime.datetime.now()
today.strftime('%Y-%m-%d')

或者,更好的、更具可读性的方法是通过执行from *package* import *module*来导入datetime包下的datetime模块。应用于datetime包,这意味着:from datetime import datetime这样:

from datetime import datetime

today = datetime.now()
today.strftime('%Y-%m-%d')

或者,我更喜欢的方法是给模块一个别名(或者基本上是一个“昵称”),这样它就不会变得混乱(LOL):

from datetime import datetime as dt
from datetime import timedelta

today = dt.now() # get date and time today
delta = td(days=3) #initialize delta
date_you_actually_want = today + delta # add the delta days
date_you_actually_want.strftime('%Y-%m-%d') # format it

希望这能帮你解决问题。

您的错误module 'datetime' has no attribute 'strftime'表明这不是导入的问题,而是如何调用strftime()方法的问题。

strftime()datetime类上的一个方法(它是datetime模块的一部分),因此需要一个实例化的datetime对象来调用它。例如:

# import datetime class from the datetime module:
from datetime import datetime

# instantiate a new datetime object:
a = datetime(12, 10, 30, 11, 23, 45)

# call the strftime() method on the object:
print(a.strftime("%H:%M:%S %Z"))
# 11:23:45

相关问题 更多 >