Convierta un objeto datetime.date en un objeto datetime.datetime con ceros para los atributos de tiempo faltantes

¿Existe una función incorporada que convierte un objeto datetime.date en un objeto datetime.datetime con 0 para las cosas que faltan? Por ejemplo, supongamos

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

Quiero escribir algo como cualquiera de estos

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

y quiero que la salida sea

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

Pero tampoco funciona. Hay una función incorporada para ir de datetime.datetime a datetime.date, pero estoy buscando la operación inversa.

Una muy mala solución sería escribir:

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

Específicamente quiero evitar esta mala manera de hacerlo.

Ya he escrito mi propia pequeña función para hacer esto, pero creo que debería proporcionarse en el módulo. Está saturando algunas importaciones de todo el sistema para usar mi función. Es viable, pero no muy pythonico.

Solo pregunto si alguien sabe si existe una forma eficiente de hacerlo utilizando solo las funciones de los módulos de datetime.

Utilice .combine(date, time) con una instancia de time vacía:

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

Si te gusta usar una constante, usa time.min :

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