やり方はいろいろあるけれどもとりあえず conbime するやり方を試みた
>>> import datetime >>> current_date = datetime.date(2014, 12, 3) >>> current_datetime = datetime.datetime.combine( ... current_date, ... datetime.time() ... ) >>> print(current_datetime) 2014-12-03 00:00:00
けれども timezone の指定で以下のように怒られてしまう
>>> import pytz >>> current_datetime.astimezone(pytz.timezone('Asia/Tokyo')) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: astimezone() cannot be applied to a naive datetime
こうすればよいみたい
>>> current_datetime = datetime.datetime.combine( ... current_date, ... datetime.time().replace(tzinfo=pytz.utc) ... ) >>> current_datetime.astimezone(pytz.timezone('Asia/Tokyo')) datetime.datetime(2014, 12, 3, 9, 0, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)
まとめると以下
import pytz import datetime current_date = datetime.date(2014, 12, 3) current_datetime = datetime.datetime.combine( current_date, datetime.time().replace(tzinfo=pytz.utc) ) current_datetime.astimezone(pytz.timezone('Asia/Tokyo'))
ちなみに time() はこういう感じになっています。
>>> datetime.time() datetime.time(0, 0) >>> print datetime.time() 00:00:00 >>> datetime.time().replace(tzinfo=pytz.utc) datetime.time(0, 0, tzinfo=<UTC>) >>> print datetime.time().replace(tzinfo=pytz.utc) 00:00:00+00:00