create - python timedelta months
Convierte un timedelta a días, horas y minutos (5)
Esto es un poco más compacto, obtienes las horas, los minutos y los segundos en dos líneas.
days = td.days
hours, remainder = divmod(td.seconds, 3600)
minutes, seconds = divmod(remainder, 60)
# If you want to take into account fractions of a second
seconds += td.microseconds / 1e6
Tengo un timedelta. Quiero los días, horas y minutos de eso, ya sea como una tupla o un diccionario ... No me preocupo.
Debo haberlo hecho una docena de veces en una docena de idiomas a lo largo de los años, pero Python usualmente tiene una respuesta simple para todo, así que pensé que podría preguntar aquí antes de sacar algunas matemáticas con náuseas simples (aunque prolijas).
El Sr. Fooz plantea un buen punto.
Estoy tratando con "listas" (un poco como las listas de eBay) donde cada una tiene una duración. Estoy tratando de encontrar el tiempo restante haciendo when_added + duration - now
¿Tengo razón al decir que eso no representaría el horario de verano? Si no, ¿cuál es la forma más simple de agregar / restar una hora?
No entiendo
days, hours, minutes = td.days, td.seconds // 3600, td.seconds // 60 % 60
Qué tal esto
days, hours, minutes = td.days, td.seconds // 3600, td.seconds % 3600 / 60.0
Usted obtiene minutos y segundos de un minuto como un flotador.
Si tiene un valor de datetime.timedelta
td
, td.days
ya le proporciona los "días" que desea. timedelta
valores de timedelta
mantienen la fracción del día como segundos (no directamente horas o minutos) por lo que de hecho tendrá que realizar "matemáticas simples nauseabundas", por ejemplo:
def days_hours_minutes(td):
return td.days, td.seconds//3600, (td.seconds//60)%60
timedeltas tiene un atributo de days
y seconds
... puede convertirlos usted mismo con facilidad.
days, hours, minutes = td.days, td.seconds // 3600, td.seconds // 60 % 60
En cuanto a DST, creo que lo mejor es convertir ambos objetos datetime
en segundos. De esta forma, el sistema calcula DST para usted.
>>> m13 = datetime(2010, 3, 13, 8, 0, 0) # 2010 March 13 8:00 AM
>>> m14 = datetime(2010, 3, 14, 8, 0, 0) # DST starts on this day, in my time zone
>>> mktime(m14.timetuple()) - mktime(m13.timetuple()) # difference in seconds
82800.0
>>> _/3600 # convert to hours
23.0