months create python timedelta

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