¿Existe un método incorporado para convertir a datea a datetimeen Python, por ejemplo, obtener datetimela medianoche de la fecha dada? La conversión opuesta es fácil: datetimetiene 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.timeobjeto inicializado a medianoche.fuente
datetime.combine(d, time())time.timeo 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
dateobjeto 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.minrepresenta.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 eltimetuplemé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
datetimemó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.datetimetener en cuenta la zona horaria. En cuyo caso, puedeimport pytzy luego agregartzinfo=pytz.timezone('Europe/London'), por ejemplo.Puede usar el
date.timetuple()método y desempaquetar el operador*.fuente
datetime.combinetravés de la respuesta de @ kiamlaluno. Creo que es bastante pitónico, especialmente dadodatetime.timeque 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
dateadatetime.datetimetiene 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 .