Pythonでa date
をa datetime
に変換するための組み込みメソッドはありdatetime
ますか?たとえば、指定された日付の真夜中のを取得しますか?逆の変換は簡単です。datetime
持っている.date()
方法を。
本当に手動で呼び出す必要がありますdatetime(d.year, d.month, d.day)
か?
datetime.from_date()
コンストラクタ。
Pythonでa date
をa datetime
に変換するための組み込みメソッドはありdatetime
ますか?たとえば、指定された日付の真夜中のを取得しますか?逆の変換は簡単です。datetime
持っている.date()
方法を。
本当に手動で呼び出す必要がありますdatetime(d.year, d.month, d.day)
か?
datetime.from_date()
コンストラクタ。
回答:
使用できますdatetime.combine(date, time)
。とりあえず、datetime.time
深夜に初期化されたオブジェクトを作成します。
from datetime import date
from datetime import datetime
dt = datetime.combine(date.today(), datetime.min.time())
datetime.combine(d, time())
time.time
や以外の何かを渡すと例外を発生させますdatetime.time
。
いくつかの方法がありますが、あなたが言及した(そして嫌いな)方法が最も読みやすい方法だと思います。
>>> t=datetime.date.today()
>>> datetime.datetime.fromordinal(t.toordinal())
datetime.datetime(2009, 12, 20, 0, 0)
>>> datetime.datetime(t.year, t.month, t.day)
datetime.datetime(2009, 12, 20, 0, 0)
>>> datetime.datetime(*t.timetuple()[:-4])
datetime.datetime(2009, 12, 20, 0, 0)
など-ただし、基本的にはすべて、date
オブジェクトから適切に情報を抽出し、それを適切なctorまたはのクラス関数に送り込むことに依存していdatetime
ます。
datetime(d.year, d.month, d.day)
受け入れられた答えよりもはるかに読みやすいようですdatetime.combine(d, datetime.min.time())
。
datetime(d.year, d.month, d.day)
はそれがより明白であるようです(時間コンポーネントのない日時)。ただし、これは重要な点ではありませんdatetime.time.min
。"midnight"のような変数名を使用すると、読み手が何を表しているのかわからなくても、結果がどうなるかが明確になります。
datetime(d.year, d.mont, d.day)
より明白であるだけでなく、より高速でもあります。
受け入れられた答えは正しいdatetime.min.time()
ですが、それが何をするのか私にははっきりしないので、私は使用を避けたいと思います。それがあなたに明らかであるならば、あなたにもっと力があります。timetuple
方法や注文への依存についても同じように感じています。
私の意見では、datetime
モジュールAPI に精通しているリーダーに依存せずにこれを行う最も読みやすい明示的な方法は次のとおりです。
from datetime import date, datetime
today = date.today()
today_with_time = datetime(
year=today.year,
month=today.month,
day=today.day,
)
それは、「明示的なものは暗黙的なものよりも優れている」という私の見解です。
d2dt = lambda date: datetime(year=date.year, month=date.month, day=date.day)
この回答のオンライン機能。
datetime
タイムゾーンを認識する必要がある場合があります。その場合、たとえば、をimport pytz
追加してtzinfo=pytz.timezone('Europe/London')
から追加できます。
date.timetuple()
メソッドとアンパック演算子を使用できます*
。
args = d.timetuple()[:6]
datetime.datetime(*args)
datetime.combine
@kiamlalunoの答えを見つける前にこれを使用していました。特にdatetime.time
オブジェクトの構築はdatetime.time(*map(int,"H:M:S".split(":")))
とにかく似ているように思われるので、それはかなりpythonicだと思います...
今日は2016年なので、最もクリーンなソリューションはパンダタイムスタンプによって提供されると思います。
from datetime import date
import pandas as pd
d = date.today()
pd.Timestamp(d)
Timestampは、datetimeに相当するパンダであり、ほとんどの場合それと交換可能です。小切手:
from datetime import datetime
isinstance(pd.Timestamp(d), datetime)
しかし、本当にバニラの日付時刻が必要な場合でも、次のことができます。
pd.Timestamp(d).to_datetime()
タイムスタンプは、特にタイムゾーンを処理する場合、日時よりもはるかに強力です。実際、タイムスタンプは非常に強力なので、ドキュメント化が不十分であるのは残念です...
まだ言及されていない日付から日付時刻に変換する1つの方法:
from datetime import date, datetime
d = date.today()
datetime.strptime(d.strftime('%Y%m%d'), '%Y%m%d')
easy_dateを使用して簡単にすることができます。
import date_converter
my_datetime = date_converter.date_to_datetime(my_date)
簡単なものが必要な場合datetime_object.date()
は、datetimeオブジェクトの日付を指定します。
date
しdatetime
。
datetime
.date()
私はPythonの初心者です。しかし、このコードは私が機能し、指定した入力を日時に変換します。これがコードです。私が間違っていたら訂正してください。
import sys
from datetime import datetime
from time import mktime, strptime
user_date = '02/15/1989'
if user_date is not None:
user_date = datetime.strptime(user_date,"%m/%d/%Y")
else:
user_date = datetime.now()
print user_date
datetime.date()
ではなくオブジェクトがあります。
.datetime()
メソッドが必要です。ばかげたことは、彼らがそのような方法を持っていないということです。