diff --git a/time.go b/time.go index 8dda83a..9de84ea 100644 --- a/time.go +++ b/time.go @@ -52,31 +52,48 @@ func GetDurationStamp(t time.Time) string { } func FormatDuration(d time.Duration) string { - seconds := int(d.Seconds()) % 60 - minutes := int(d.Minutes()) % 60 - hours := int(d.Hours()) % 24 - days := int(d.Hours()) / 24 - years := int(d.Hours()) / (24 * 365) - result := "" + + // check if it's more than a year + years := int(d.Hours()) / (24 * 365) if years > 0 { result += fmt.Sprintf("%dy ", years) return result } + + // check if it's more than a day + days := int(d.Hours()) / 24 if days > 0 { result += fmt.Sprintf("%dd ", days) return result } + + // check if it's more than an hour + hours := int(d.Hours()) % 24 if hours > 0 { result += fmt.Sprintf("%dh ", hours) return result } + + // check if it's more than a minute + minutes := int(d.Minutes()) % 60 if minutes > 0 { result += fmt.Sprintf("%dm ", minutes) return result } + + // check if it's more than a second + seconds := int(d.Seconds()) % 60 if seconds > 0 { result += fmt.Sprintf("%ds", seconds) + return result } + + // report in milliseconds + ms := int(d.Milliseconds()) + if ms > 100 { + // todo: print .3s, etc ? + } + result += fmt.Sprintf("%dms", ms) return result }