タイプオブジェクト 'datetime.datetime'には属性 'datetime'がありません


126

次のエラーが発生しました:

タイプオブジェクト 'datetime.datetime'には属性 'datetime'がありません

次の行で:

date = datetime.datetime(int(year), int(month), 1)

誰かがエラーの理由を知っていますか?

from datetime import datetimeそれが役立つ場合は、私は日時をインポートしました

ありがとう

回答:


225

日時は、日付、時刻、日時(すべてデータ型)の処理を可能にするモジュールです。つまり、これはdatetime最上位モジュールであると同時に、そのモジュール内の型でもあります。これは紛らわしいです。

エラーはおそらく、モジュールのわかりにくい名前と、ユーザーまたは使用しているモジュールがすでにインポートしたものに基づいています。

>>> import datetime
>>> datetime
<module 'datetime' from '/usr/lib/python2.6/lib-dynload/datetime.so'>
>>> datetime.datetime(2001,5,1)
datetime.datetime(2001, 5, 1, 0, 0)

しかし、datetime.datetimeをインポートする場合:

>>> from datetime import datetime
>>> datetime
<type 'datetime.datetime'>
>>> datetime.datetime(2001,5,1) # You shouldn't expect this to work 
                                # as you imported the type, not the module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
>>> datetime(2001,5,1)
datetime.datetime(2001, 5, 1, 0, 0)

あなたまたはあなたが使用しているモジュールの1つが次のようにインポートされたと思います: from datetime import datetime


3
@jozzas素晴らしい答え。私はあなたのソリューションで解決されたtimedeltaに問題がありました。Txs。
Luis Miguel

1
@Jeanこれは、日付時刻が独自のモジュールの名前を、Pythonではなく、そのクラス名の1つでシャドウしているのが原因です。
ロビノ2018

85

Python 3.3の場合

from datetime import datetime, timedelta
futuredate = datetime.now() + timedelta(days=10)

12
+1。私の知る限り、import datetime常に問題が発生するので、これは正しい答えであると思います。そのため、次を使用する解決策に賛成ですfrom datetime import datetime
jeff

14

あなたは使うべきです

date = datetime(int(year), int(month), 1)

または変更

from datetime import datetime

import datetime

11

実際にモジュールを独自のエイリアスにインポートする必要があります。

import datetime as dt
my_datetime = dt.datetime(year, month, day)

上記には、他のソリューションに比べて次の利点があります。

  • my_datetime代わりに変数を呼び出すと、datetimeモジュール()にdate既にがあるため、混乱が減りdateますdatetime.date
  • モジュールとクラス(どちらもdatetime)は、相互にシャドウイングしません。

1

使用したことがある場合:

from datetime import datetime

次に、コードを次のように記述します。

date = datetime(int(year), int(month), 1)

しかし、あなたが使用した場合:

import datetime

その後、あなただけが書くことができます:

date = datetime.datetime(int(2005), int(5), 1)


1

私は同じエラーに遭遇します。多分あなたはすでに使用しているだけでモジュールをインポートしているimport datetimeのでform datetime import datetime、だけに変更 してくださいimport datetime。元に戻した後、うまくいきました。


-2
from datetime import datetime
import time
from calendar import timegm
d = datetime.utcnow()
d = d.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
utc_time = time.strptime(d,"%Y-%m-%dT%H:%M:%S.%fZ")
epoch_time = timegm(utc_time)

6
コードのみの回答は避けてください。あなたはできる編集コードをサポートするために、いくつかの説明とリンクを追加するためにあなたのポストを。
Tomerikoo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.