dateオブジェクトは、datetimeオブジェクトと比べると時間の情報がないわけですが、datetimeオブジェクトでありながらhour,min,secなどの時刻属性が0で切り捨てられた値が欲しい時があります。
dateオブジェクトとdatetimeオブジェクトは似ていますが、違うオブジェクトなので大小比較できなかったりするので、そういう時にこまります。
timetupleから生成
datetimeオブジェクト生成時の年月日の引数を、dateオブジェクトのtimetupleから生成する方法です。
>>> import datetime
>>> date_object = datetime.date.today() #datetime.date(2014, 11, 12)
>>> datetime.datetime(*date_object.timetuple()[:3])
>>> datetime.datetime(2014, 11, 12, 0, 0) #時刻切り捨てのdatetime
date_object.timetuple()[:3]
で、(year, month, day)のタプルが得られるので、それを引数に展開して生成しています。
時刻要素をreplace
別の方法として、dateオブジェクトからreplaceで時刻要素を0にする例です。
>>> import datetime
>>> date_object = datetime.date.today() #datetime.date(2014, 11, 12)
>>> date_object.replace(hour=0, minute=0, second=0, microsecond=0)
>>> datetime.datetime(2014, 11, 12, 0, 0) #時刻切り捨てのdatetime