प्रकार ऑब्जेक्ट '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)

मुझे आप पर शक है या आपके द्वारा उपयोग किए जा रहे किसी एक मॉड्यूल को इस तरह आयात किया गया है from datetime import datetime:।


3
@ जोजस महान जवाब। मुझे आपके समाधान के साथ समयबद्धता के साथ एक समस्या थी। Txs।
लुइस मिगुएल

1
@ जीन यह डेटाइम का दोष है जो अपने ही एक वर्ग के नाम के साथ मॉड्यूल का नाम छायांकित करता है, न कि अजगर का।
रॉबिनो

85

अजगर 3.3 के लिए

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

12
+1। मुझे लगता है कि यह सही उत्तर होना चाहिए क्योंकि जहां तक ​​मुझे पता है, import datetimeहमेशा समस्याएं पैदा करता है, इसलिए मैं एक समाधान के पक्ष में हूं जो उपयोग करता हैfrom datetime import datetime
जेफ

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को 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
कोड-ही उत्तरों से बचने की कोशिश करें। आप अपने कोड का समर्थन करने के लिए कुछ स्पष्टीकरण और लिंक जोड़ने के लिए अपनी पोस्ट को संपादित कर सकते हैं ।
टोमेरिकू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.