Steven D'Aprano <st...@pearwood.info> writes: > On Thu, 26 May 2016 03:28 pm, Zachary Ware wrote: > >> On Thu, May 26, 2016 at 12:16 AM, Steven D'Aprano >> <steve+comp.lang.pyt...@pearwood.info> wrote: >>> I have a timedelta object, and I want to display it in a nice >>> human-readable format like 03:45:17 for "three hours, forty five minutes, >>> 17 seconds". >>> >>> Is there a standard way to do this? >> >> >>> timedelta(100) >> datetime.timedelta(100) >> >>> str(timedelta(seconds=100)) >> '0:01:40' >> >>> str(timedelta(hours=100)) >> '4 days, 4:00:00' >> >> (I recently spent *way* too long trying to figure out how to properly >> format the thing before being reminded that a plain str call gives >> exactly what I was after.) > > Thanks Zach. Unfortunately, the format is not quite how I want it, so I > guess I'll have to extract the H:M:S fields manually from the seconds.
It might be useful if timedelta were to get an isoformat() method. ISO 8601 specifies formats for durations; most people are familiar only with the date amd time formats. There are variations available but PnDTnHnMnS is probably the best. The biggest timedelta unit is days. Years and months are not appropriate. -- Pete Forman -- https://mail.python.org/mailman/listinfo/python-list