es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convirtiendo una cadena de texto en horas y minutos a formato de fecha y hora

Se me ha dado una lista de tiempo en formato militar en horas y minutos como una cadena de caracteres. Naturalmente, necesito convertir cada cadena en un objeto de fecha y hora utilizando la clase strptime con %H para el reloj militar o de 24 horas y %M para los minutos. Sin embargo, cada vez que intento analizarlo, obtengo una salida para año, mes, día, hora, minutos, segundos sin motivo aparente.

Por ejemplo:

from datetime import datetime
string_time = '18:00'
formatted_time = datetime.strptime(string_time, '%H:%M')

print(formatted_time)

Output:
1900-01-01 18:00:00

Esta mañana, cuando estaba trabajando en la tarea, se imprimió perfectamente bien, pero de repente empecé a obtener esta extraña salida. En ninguna parte de mi directorio o archivo actual intenté formatear un tiempo con año-mes-día. Sin embargo, sí intenté crear un objeto datetime vacío, pero lo eliminé después de darme cuenta de que no se puede tener un objeto datetime vacío.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema con la salida se debe a que el método strptime analiza la cadena de tiempo en un objeto de fecha y hora completo, incluyendo el año, mes y día. Sin embargo, dado que estos valores no están presentes en la cadena original, se establecen de manera predeterminada en 1900, 1 y 1 respectivamente.

    Para evitar esto, puedes utilizar el módulo time en Python y analizar la cadena en un objeto de tiempo en lugar de un objeto de fecha y hora. Aquí tienes un ejemplo de código:

    from datetime import time
    
    string_time = '18:00'
    # analizar la cadena en un objeto de tiempo
    formatted_time = time(*map(int, string_time.split(':')))
    
    print(formatted_time)
    

    Esto debería producir la siguiente salida:

    18:00:00
    

    Al utilizar el módulo time, solo nos importan las horas, los minutos y los segundos de la hora, y no el año, el mes y el día.

Comments are closed.