2013-06-07 10 views
13

मेरे पास एक चर है और मुझे यह जानने की आवश्यकता है कि यह डेटाटाइम ऑब्जेक्ट है या नहीं।पता लगाएं कि कोई चर डेटाटाइम ऑब्जेक्ट

अब तक मैं समारोह में निम्नलिखित हैक का उपयोग किया गया दिनांक वस्तु का पता लगाने के:

if 'datetime.datetime' in str(type(variable)): 
    print('yes') 

लेकिन वहाँ वास्तव में पता लगाने के लिए है वस्तु कुछ किस प्रकार एक तरह से किया जाना चाहिए। बस मैं क्या कर सकते हैं की तरह:

if type(variable) is str: print 'yes' 

वहाँ एक स्ट्रिंग में वस्तु प्रकार का नाम बदल और यदि स्ट्रिंग 'datetime.datetime' शामिल देखकर हैक की तुलना में इस दूसरे करने के लिए एक तरीका है?

+0

हुह? क्या यह ठीक नहीं है 'isinstance() 'के लिए क्या है? – Celada

+0

आप ऐसा क्यों करना चाहते हैं? – Daenyth

+0

@ डेनथ अक्सर वैध कारण होते हैं कि बतख टाइपिंग एक स्थिति या दूसरे में क्यों काम नहीं करती है। लेकिन ओपी के रूप में टाइप नाम के स्ट्रिंग प्रस्तुति की तुलना कर रहा है? यह सही नहीं हो सकता है! – Celada

उत्तर

33

आप isinstance(variable, datetime.datetime) की जरूरत है:

>>> import datetime 
>>> now = datetime.datetime.now() 
>>> isinstance(now, datetime.datetime) 
True 
+1

दूसरों के लिए नहीं, यह आमतौर पर सबसे अच्छा होना चाहिए क्योंकि यह 'प्रकार (चर) == डेटाटाइम डेटाटाइम' से अधिक लचीला है और 'पांडा' टाइम-स्टैम्प ऑब्जेक्ट्स और संभावित रूप से अन्य टाइम-स्टाम्प प्रारूपों के लिए 'ट्रू' भी प्रदान करेगा। – ryanjdillon

6

उपयोग isinstance

if isinstance(variable,datetime.datetime): 
    print "Yay!" 
3

isinstance, अपने दोस्त

>>> thing = "foo" 
>>> isinstance(thing, str) 
True 
+1

अच्छा काम लड़कों। बहुत बढ़िया। – TehTris

2

जबकि isinstance का उपयोग कर आप क्या चाहते हो जाएगा यह भावना है कि यह अनुमति से माफी पूछने के लिए बेहतर है में, बहुत 'pythonic' नहीं है।

try: 
    do_something_small_with_object() #Part of the code that may raise an 
            #exception if its the wrong object 
except StandardError: 
    handle_case() 

else: 
    do_everything_else() 
0

मेरा मानना ​​है कि सब से ऊपर जवाब केवल तभी कार्य करेगा दिनांक प्रकार datetime.datetime की है। क्या होगा यदि दिनांक ऑब्जेक्ट datetime.time या datetime.date प्रकार है?

इस प्रकार मुझे डेटाटाइम ऑब्जेक्ट मिलता है। यह हमेशा मेरे लिए काम करता है। (को Python2 & python3):

import datetime 
type(date_obj) in (datetime, datetime.date, datetime.datetime, datetime.time) 

को Python2 या python3 खोल में परीक्षण:

import datetime 
d = datetime.datetime.now() # creating a datetime.datetime object. 
date = d.date() # type(date): datetime.date 
time = d.time() # type(time): datetime.time 

type(d) in (datetime, datetime.date, datetime.datetime, datetime.time) 
True 
type(date) in (datetime, datetime.date, datetime.datetime, datetime.time) 
True 
type(time) in (datetime, datetime.date, datetime.datetime, datetime.time) 
True 
संबंधित मुद्दे