关于python:将datetime.date对象转换为datetime.datetime对象,其中任何缺少的时间属性都为零

Convert a datetime.date object into a datetime.datetime object with zeros for any missing time attributes

是否有一个内置函数将datetime.date对象转换为datetime.datetime对象,其中缺少的内容为0?例如,假设

1
tdate = datetime.date(2012,1,31)

我想写些像这样的东西

1
2
tdatetime = datetime.date.datetime()
tdatetime = datetime.datetime(tdate)

我希望输出

1
datetime.datetime(2012, 1, 31, 0, 0)

但两者都不起作用。有一个内置函数可以从datetime.datetime转到datetime.date,但我正在寻找反向操作。

一个非常糟糕的解决方案是写:

1
datetime.datetime(tdate.year(), tdate.month(), tdate.day(), 0, 0)

我特别想避免这种糟糕的做法。

我已经编写了自己的小函数来完成这个任务,但我认为应该在模块中提供它。为了使用我的函数,它把一些系统范围的导入弄乱了。它是可行的,只是不是很像Python。

我只是想看看是否有人知道是否有一种只使用datetime模块函数的有效方法。


.combine(date, time)与空的time实例一起使用:

1
2
3
4
>>> import datetime
>>> tdate = datetime.date(2012,1,31)
>>> datetime.datetime.combine(tdate, datetime.time())
datetime.datetime(2012, 1, 31, 0, 0)

如果要使用常量,请使用time.min

1
2
>>> datetime.datetime.combine(tdate, datetime.time.min)
datetime.datetime(2012, 1, 31, 0, 0)