diff --git a/time.go b/time.go index 9de84ea..e67cce1 100644 --- a/time.go +++ b/time.go @@ -51,6 +51,14 @@ func GetDurationStamp(t time.Time) string { return FormatDuration(duration) } +// allows nil +func HumanDuration(d *time.Duration) string { + if d == nil { + return "" + } + return FormatDuration(*d) +} + func FormatDuration(d time.Duration) string { result := "" @@ -94,6 +102,19 @@ func FormatDuration(d time.Duration) string { if ms > 100 { // todo: print .3s, etc ? } - result += fmt.Sprintf("%dms", ms) + if ms > 0 { + result += fmt.Sprintf("%dms", ms) + return result + } + + // report in milliseconds + mc := int(d.Microseconds()) + if mc > 0 { + result += fmt.Sprintf("%dmc", mc) + return result + } + + ns := int(d.Nanoseconds()) + result += fmt.Sprintf("%dns", ns) return result }