460 votos

Convertir fecha de fecha en Python

Pregunta tonta, pero es que hay un método integrado para la conversión de un date a datetime en Python, es decir,. obtener el datetime de la medianoche de la date? La conversión opuesta es fácil - datetime tiene un .date() método. ¿Realmente tengo manualmente llame datetime(d.year, d.month, d.day) ?

569voto

kiamlaluno Puntos 11856

Usted puede utilizar datetime.combine(fecha, hora); por el momento, se crea un datetime.time objeto inicializado a la medianoche.

from datetime import date
from datetime import datetime
d = date.today()
datetime.combine(d, datetime.min.time())

98voto

Alex Martelli Puntos 330805

Hay varias maneras, aunque yo creo que el que usted menciona (y disgusta) es la más legible.

>>> 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)

y así sucesivamente-pero, básicamente, todos ellos de la bisagra en la adecuada extracción de información a partir de la date objeto y arar de nuevo en el adecuado cto r o classfunction para datetime.

46voto

Wes Winham Puntos 570

El aceptó respuesta es correcta, pero prefiero evitar el uso de datetime.min.time() porque no es obvio para mí exactamente lo que hace. Si es obvio para usted, a continuación, más poder para ti. También me siento de la misma manera acerca de la timetuple método y la dependencia de la realización del pedido.

En mi opinión, el más legible, explícita, de manera de hacer esto sin depender de que el lector esté muy familiarizado con el datetime módulo API es:

from datetime import date, datetime
today = date.today()
today_with_time = datetime(
    year=today.year, 
    month=today.month,
    day=today.day,
)

Esa es mi opinión sobre el "explícito es mejor que implícito."

40voto

teepark Puntos 954

Usted puede utilizar el timetuple() método y varargs.

datetime.datetime(*(d.timetuple()[:6]))

-6voto

Bassdread Puntos 330

Si necesitas algo rápido, datetime_object.date() le da una fecha de un objeto datetime.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X