<p>一旦考虑到<code>datetime</code>同时是包名<em>和</em>日期时间内的模块名,使用<code>datetime</code>就会变得非常混乱。</p>
<p><code>datetime</code><em>包</em>有许多不同的模块,即:</p>
<p><code>datetime</code>模块处理datetime对象。</p>
<p><code>date</code>模块处理日期对象。</p>
<p><code>time</code>模块处理时间对象。</p>
<p><code>timedelta</code>模块处理timedelta对象。</p>
<p>在您的例子中,当您说<code>import datetime</code>时,您真正指的是<code>datetime</code><em>包</em><strong>而不是</strong>模块</em>。</p>
<p><code>strftime</code>是<code>datetime</code><em>对象</em>的方法(即在datetime模块下)</p>
<p><strong>因此,有两种方法可以实现这一点。</strong></p>
<p>如果使用<code>import datetime</code>,则必须指定包、模块和方法,如下所示:</p>
<pre><code>import datetime
today = datetime.datetime.now()
today.strftime('%Y-%m-%d')
</code></pre>
<p>或者,更好的、更具可读性的方法是通过执行<code>from *package* import *module*</code>来导入<code>datetime</code>包下的<code>datetime</code>模块。应用于datetime包,这意味着:<code>from datetime import datetime</code>这样:</p>
<pre><code>from datetime import datetime
today = datetime.now()
today.strftime('%Y-%m-%d')
</code></pre>
<p>或者,我更喜欢的方法是给模块一个<em>别名</em>(或者基本上是一个“昵称”),这样它就不会变得混乱(LOL):</p>
<pre><code>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
</code></pre>
<p>希望这能帮你解决问题。</p>