2013-07-13 66 views
0

this one稍有不同的問題。 datetime.date對象是datetime.datetime對象的子集嗎?是否有實例,當一個變量可能是一個datetime.date類型和一個datetime.datetime對象?Python日期時間和日期類型

下面,我做一個datetime.datetime對象,似乎也驗證爲datetime.date對象。思考?

In [1]: import datetime 

In [2]: x = datetime.datetime(2013, 7, 13, 13, 0) 

In [3]: isinstance(x, datetime.date) 
Out[3]: True 

In [4]: isinstance(x, datetime.datetime) 
Out[4]: True 

回答

4

實際上datetime.datetimedatetime.date的子類。

>>> issubclass(datetime.datetime, datetime.date) 
True 

所以對於datetime.datetime一個實例,isinstance(instance, datetime.date)將返回True。但如果兩者相反則返回False

>>> date = datetime.date(2011, 1, 1) 
>>> isinstance(date, datetime.datetime) 
False 
>>> 
+0

啊哈,謝謝@ zhangyangyu。 (可憐的形式,但另一個問題)...有沒有一種地道的方式來區分除你上面描述的以外的兩個? – Peter

+0

很抱歉,我不是一個有經驗的編碼員,也不知道一種慣用的方式。但試試這個'x .__ class__ == datetime.datetime'返回'True','x .__ class__ == datetime.date'返回'False'。 @Pete – zhangyangyu