是否有一个内置的方法的转换date
的datetime
在 Python,例如获取datetime
在指定日期的午夜?相反的转换很容易: datetime
有一个.date()
方法。
我真的必须手动调用datetime(d.year, d.month, d.day)
吗?
您可以使用datetime.combine(date, time)
; 对于该时间,您创建一个初始化为午夜datetime.time
from datetime import date
from datetime import datetime
dt = datetime.combine(date.today(), datetime.min.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
对象和春耕它放回合适的构造函数或 classfunction 的datetime
。
可接受的答案是正确的,但是我宁愿避免使用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,
)
这就是我对 “明确胜于隐含” 的看法。