在Python中将日期转换为日期时间
在Python中,有没有现成的方法可以把一个date
转换成datetime
呢?比如说,想要得到某个日期的午夜时间(也就是00:00:00)。其实,把datetime
转换成date
很简单,因为datetime
有个.date()
的方法。
我真的需要手动去调用datetime(d.year, d.month, d.day)
吗?
11 个回答
131
这个被接受的答案是对的,但我更倾向于不使用 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,
)
这就是我对“明确比隐含更好”的看法。
215
有几种方法可以做到这一点,不过我觉得你提到的那种(虽然你不喜欢)是最容易理解的。
>>> import datetime
>>> 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
对象中正确提取信息,然后把这些信息放回到适合的构造函数或类函数中,用于datetime
。
1242
你可以使用 datetime.combine(date, time)
这个方法来把日期和时间结合起来。为了时间部分,你可以创建一个 datetime.time
对象,并把它设置为午夜,也就是00:00。
from datetime import date
from datetime import datetime
dt = datetime.combine(date.today(), datetime.min.time())