Pythonでその日の任意の時間のdatetimeインスタンスを取得する


前提

事前にdatetimeをimportしておきます。

from datetime import datetime

その日の0時0分0秒のdatetimeインスタンス

replaceを使って無理やりその日の0時0分0秒にします。

datetime.now().replace(hour=0,minute=0,second=0,microsecond=0)

実行結果

>>> datetime.now().replace(hour=0,minute=0,second=0,microsecond=0)
datetime.datetime(2015, 8, 22, 0, 0)

応用

タイムゾーンを考える

pytzを利用してタイムゾーンに対応してみます

>>> import pytz
>>> tz = pytz.timezone('Asia/Tokyo')
>>> datetime.now(tz).replace(hour=0,minute=0,second=0,microsecond=0)
datetime.datetime(2015, 8, 22, 0, 0, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)

その年の元日の0時0分0秒のdatetimeインスタンス

上記に加えて1月1日であればよいので以下の通り。

>>> import pytz
>>> tz = pytz.timezone('Asia/Tokyo')
>>> datetime.now(tz).replace(month=1,day=1,hour=0,minute=0,second=0,microsecond=0)
datetime.datetime(2015, 1, 1, 0, 0, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)