¿Existe un método incorporado para convertir a date
a a datetime
en Python, por ejemplo, obtener datetime
la medianoche de la fecha dada? La conversión opuesta es fácil: datetime
tiene un .date()
método.
¿Realmente tengo que llamar manualmente datetime(d.year, d.month, d.day)
?
.datetime()
método; Lo tonto es que no tienen ese método.datetime.from_date()
constructor.Respuestas:
Puedes usar
datetime.combine(date, time)
; por el momento, crea undatetime.time
objeto inicializado a medianoche.fuente
datetime.combine(d, time())
time.time
o cualquier otra cosa que no sea adatetime.time
.Hay varias formas, aunque creo que la que mencionas (y no te gusta) es la más fácil de leer.
y así sucesivamente - pero básicamente todos ellos bisagra en la extracción de información adecuada desde el
date
objeto y el arado de nuevo en el ctor o classfunction adecuado paradatetime
.fuente
datetime(d.year, d.month, d.day)
parece mucho más legible que la respuesta aceptadadatetime.combine(d, datetime.min.time())
.midnight = datetime.datetime.combine(d, datetime.time.min)
parece más limpio (sugerido por@
larham1 )datetime(d.year, d.month, d.day)
es más obvio (una fecha y hora sin el componente de tiempo). Sin embargo, es un punto menor, y el uso de un nombre de variable como "medianoche" hace obvio cuál es el resultado, incluso si el lector no sabe lo quedatetime.time.min
representa.datetime(d.year, d.mont, d.day)
no solo es más obvio, también es más rápido .La respuesta aceptada es correcta, pero preferiría evitar usarla
datetime.min.time()
porque no es obvio para mí exactamente lo que hace. Si es obvio para ti, entonces más poder para ti. También siento lo mismo sobre eltimetuple
método y la confianza en el pedido.En mi opinión, la forma más legible y explícita de hacerlo sin confiar en que el lector esté muy familiarizado con el
datetime
módulo API es:Esa es mi opinión sobre "explícito es mejor que implícito".
fuente
d2dt = lambda date: datetime(year=date.year, month=date.month, day=date.day)
función en línea de esta respuesta.datetime
tener en cuenta la zona horaria. En cuyo caso, puedeimport pytz
y luego agregartzinfo=pytz.timezone('Europe/London')
, por ejemplo.Puede usar el
date.timetuple()
método y desempaquetar el operador*
.fuente
datetime.combine
través de la respuesta de @ kiamlaluno. Creo que es bastante pitónico, especialmente dadodatetime.time
que es probable que la construcción de un objeto se parezca a algo asídatetime.time(*map(int,"H:M:S".split(":")))
...Hoy, siendo 2016, creo que la solución más limpia la proporciona pandas Timestamp:
La marca de tiempo es el equivalente de pandas de fecha y hora y es intercambiable en la mayoría de los casos. Cheque:
Pero en caso de que realmente desee una fecha y hora de vainilla, aún puede hacer:
Las marcas de tiempo son mucho más poderosas que las fechas, entre otras cuando se trata de zonas horarias. En realidad, las marcas de tiempo son tan poderosas que es una pena que estén tan mal documentadas ...
fuente
Una forma de convertir de fecha a fecha y hora que aún no se ha mencionado:
fuente
Puede usar easy_date para facilitarlo:
fuente
Si necesita algo rápido,
datetime_object.date()
le da una fecha de un objeto datetime.fuente
date
adatetime
.datetime
tiene un.date()
método. , énfasis audaz el mío.Soy un novato en Python. Pero este código funcionó para mí, que convierte la entrada especificada que proporciono a datetime. Aquí está el código. Corrígeme si estoy equivocado.
fuente
datetime.date()
objeto, no una cadena .