将datetime.date对象转换为datetime.datetime对象,其中包含任意缺失时间属性的零

ely*_*ely 4 python datetime date python-datetime

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

tdate = datetime.date(2012,1,31)
Run Code Online (Sandbox Code Playgroud)

我想写一些类似的东西

tdatetime = datetime.date.datetime()
tdatetime = datetime.datetime(tdate)
Run Code Online (Sandbox Code Playgroud)

我想要输出

datetime.datetime(2012, 1, 31, 0, 0)
Run Code Online (Sandbox Code Playgroud)

但都不起作用.有一个内置函数从datetime.datetime到datetime.date,但我正在寻找相反的操作.

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

datetime.datetime(tdate.year(), tdate.month(), tdate.day(), 0, 0)
Run Code Online (Sandbox Code Playgroud)

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

我已经编写了自己的小函数来执行此操作,但我认为它应该在模块中提供.它使一些系统范围的导入变得混乱以使用我的功能.这是可行的,只是不太Pythonic.

我只想询问是否有人知道是否有一种有效的方法只使用日期时间模块功能.

Mar*_*ers 11

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

>>> import datetime
>>> tdate = datetime.date(2012,1,31)
>>> datetime.datetime.combine(tdate, datetime.time())
datetime.datetime(2012, 1, 31, 0, 0)
Run Code Online (Sandbox Code Playgroud)

如果您想使用常量,请使用time.min:

>>> datetime.datetime.combine(tdate, datetime.time.min)
datetime.datetime(2012, 1, 31, 0, 0)
Run Code Online (Sandbox Code Playgroud)