months biblioteca python datetime multiplying timedelta

biblioteca - python timedelta months



Timedelta se multiplica con float en python (2)

Tengo dos fechas y puedo calcular timedelta como de costumbre.

Pero quiero calcular algún porcentaje con el resultado de timedelta:

full_time = (100/percentage) * timdelta

Pero parece que solo se puede multiplicar con interegs.

¿Cómo puedo usar float lugar de int como multiplicador?

Ejemplo:

percentage = 43.27 passed_time = fromtimestamp(fileinfo.st_mtime) - fromtimestamp(fileinfo.st_ctime) multiplier = 100 / percentage # 2.3110700254217702796394730760342 full_time = multiplier * passed_time # BUG: here comes exception estimated_time = full_time - passed_time

Si se usa int(multiplier) - la precisión sufre.


Puedes convertir a segundos totales y viceversa:

full_time = timedelta(seconds=multiplier * passed_time.total_seconds())

timedelta.total_seconds está disponible desde Python 2.7; en versiones anteriores use

def timedelta_total_seconds(td): return (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / float(10**6)


Puedes usar total_seconds() :

datetime.timedelta(seconds=datetime.timedelta(minutes=42).total_seconds() * 0.8) # => datetime.timedelta(0, 2016)