A little Go util to print duration strings in a human-friendly format
The String function takes a Duration and the precision that's important to the user.
The allowed precisions are year, week, day, hour, minute and second
import "github.com/davidbanham/human_duration"
example := time.Hour * 24 + time.Minute * 4 + time.Second * 8
fmt.Println(human_duration.String(example, "second")) // 1 day 4 minutes 8 seconds
fmt.Println(human_duration.String(example, "minute")) // 1 day 4 minutes
fmt.Println(human_duration.String(example, "day")) // 1 day
fmt.Println(human_duration.String(example, "year")) // less than a year
day := time.Hour * 24
year := day * 365
longExample := year * 4 + day * 2
fmt.Println(human_duration.String(longExample, "second")) // 4 years 2 days
There are more examples in the tests.
Adapted and extended from (this gist)[https://gist.github.com/harshavardhana/327e0577c4fed9211f65]