dateオブジェクトから時間が切り捨てられたdatetimeオブジェクトを取得する

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
関連記事:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)