tipe objek 'datetime.datetime' tidak memiliki atribut 'datetime'


127

Saya mendapatkan kesalahan berikut:

tipe objek 'datetime.datetime' tidak memiliki atribut 'datetime'

Di baris berikut:

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

Apakah ada yang tahu alasan kesalahannya?

Saya mengimpor datetime dengan from datetime import datetime jika itu membantu

Terima kasih

Jawaban:


225

Datetime adalah modul yang memungkinkan penanganan tanggal, waktu, dan waktu (semuanya adalah tipe data). Artinya itudatetime modul tingkat atas sekaligus tipe di dalam modul itu. Ini membingungkan.

Kesalahan Anda mungkin didasarkan pada penamaan modul yang membingungkan, dan apa yang Anda atau modul yang Anda gunakan telah diimpor.

>>> 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)

Tetapi, jika Anda mengimpor 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)

Saya menduga Anda atau salah satu modul yang Anda gunakan telah diimpor seperti ini: from datetime import datetime.


3
@jozzas jawaban yang bagus. Saya punya masalah dengan timedelta yang diselesaikan dengan solusi Anda. Txs.
Luis Miguel

1
@Jean ini adalah kesalahan datetime yang membayangi nama modulnya sendiri dengan salah satu nama kelasnya, bukan python.
Robino

85

Untuk python 3.3

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

12
+1. Saya pikir ini harus menjadi jawaban yang benar karena sejauh yang saya tahu, import datetimeselalu menyebabkan masalah, jadi saya mendukung solusi yang menggunakanfrom datetime import datetime
jeff

14

Kamu harus menggunakan

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

Atau ubah

from datetime import datetime

untuk

import datetime

11

Anda harus benar-benar mengimpor modul ke dalam aliasnya sendiri .

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

Di atas memiliki keunggulan berikut dibandingkan solusi lainnya:

  • Memanggil variabel my_datetimealih-alih datemengurangi kebingungan karena sudah ada datedi modul datetime ( datetime.date).
  • Modul dan kelas (keduanya disebut datetime) tidak saling membayangi.

1

Jika Anda pernah menggunakan:

from datetime import datetime

Kemudian cukup tulis kodenya sebagai:

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

Tetapi jika Anda telah menggunakan:

import datetime

maka hanya Anda yang bisa menulis:

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

1

Saya menemukan ini jauh lebih mudah

from dateutil import relativedelta
relativedelta.relativedelta(end_time,start_time).seconds

1

Saya mengalami kesalahan yang sama mungkin Anda sudah mengimpor modul dengan hanya menggunakan import datetimejadi ubah form datetime import datetimeke saja import datetime. Ini berhasil untuk saya setelah saya mengubahnya kembali.


-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
Cobalah untuk menghindari jawaban hanya kode. Anda dapat mengedit posting Anda untuk menambahkan beberapa penjelasan dan link untuk mendukung kode Anda.
Tomerikoo
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.