# time.duration Timesheets, job cards and billing notes write durations in a handful of ways. This reads them, adds them and writes the total back out, in whole minutes, so one call turns ["1h30m", "45m", "0:15"] into 150 minutes, "2h30m" and "02:30". A single duration is a list of one. Accepted forms, with surrounding spaces and upper-case H/M allowed: - hours and minutes: `1h30m`, `1h 30m`, `2h`, `45m`, `90m`. Minutes alone may be 60 or more; next to hours they must be under 60, so `1h90m` is an error (a typo for 1h30m or 1h09m, it cannot be told which). - clock form: `01:30`, `1:30`, `100:00`, with exactly two minute digits under 60. Rejected, loudly: a bare number (`90`: minutes or hours?), decimals (`1.5h`: use 1h30m), negatives, seconds, units in the wrong order (`30m1h`), and any number over six digits. A duration is a length of time, so it is never negative. It deals only in lengths of time. It never reads the clock and knows nothing about dates, time zones or daylight saving; minutes between two wall-clock times is time.minutes-between, and billing increments are time.round-to-increment. The clock form does not wrap at 24 hours: 25 and a half hours is "25:30", because a total of work is not a time of day.