mirror of
https://github.com/luxfi/cli.git
synced 2026-10-30 17:01:20 +00:00
42 lines
890 B
Go
42 lines
890 B
Go
// Copyright (C) 2022, Lux Industries Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
package ux
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
// FormatDuration returns a user friendly string for a duration
|
|
func FormatDuration(d time.Duration) string {
|
|
var sb strings.Builder
|
|
|
|
y := d / (24 * 365 * time.Hour)
|
|
if y > 0 {
|
|
d -= y * 24 * 365 * time.Hour
|
|
_, _ = sb.WriteString(fmt.Sprintf("%d years ", y))
|
|
}
|
|
dd := d / (24 * time.Hour)
|
|
if dd > 0 {
|
|
d -= dd * 24 * time.Hour
|
|
_, _ = sb.WriteString(fmt.Sprintf("%d days ", dd))
|
|
}
|
|
h := d / time.Hour
|
|
if h > 0 {
|
|
d -= h * time.Hour
|
|
_, _ = sb.WriteString(fmt.Sprintf("%d hours ", h))
|
|
}
|
|
m := d / time.Minute
|
|
if m > 0 {
|
|
d -= m * time.Minute
|
|
_, _ = sb.WriteString(fmt.Sprintf("%d minutes ", m))
|
|
}
|
|
s := d / time.Second
|
|
if s > 0 {
|
|
_, _ = sb.WriteString(fmt.Sprintf("%d seconds ", s))
|
|
}
|
|
|
|
return sb.String()
|
|
}
|