mirror of
https://github.com/containrrr/watchtower.git
synced 2025-09-22 05:40:50 +02:00
47 lines
908 B
Go
47 lines
908 B
Go
package util
|
|
|
|
import (
|
|
"math"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
func FormatDuration(d time.Duration) string {
|
|
sb := strings.Builder{}
|
|
|
|
hours := int64(d.Hours())
|
|
minutes := int64(math.Mod(d.Minutes(), 60))
|
|
seconds := int64(math.Mod(d.Seconds(), 60))
|
|
|
|
if hours == 1 {
|
|
sb.WriteString("1 hour")
|
|
} else if hours != 0 {
|
|
sb.WriteString(strconv.FormatInt(hours, 10))
|
|
sb.WriteString(" hours")
|
|
}
|
|
|
|
if hours != 0 && (seconds != 0 || minutes != 0) {
|
|
sb.WriteString(", ")
|
|
}
|
|
|
|
if minutes == 1 {
|
|
sb.WriteString("1 minute")
|
|
} else if minutes != 0 {
|
|
sb.WriteString(strconv.FormatInt(minutes, 10))
|
|
sb.WriteString(" minutes")
|
|
}
|
|
|
|
if minutes != 0 && (seconds != 0) {
|
|
sb.WriteString(", ")
|
|
}
|
|
|
|
if seconds == 1 {
|
|
sb.WriteString("1 second")
|
|
} else if seconds != 0 || (hours == 0 && minutes == 0) {
|
|
sb.WriteString(strconv.FormatInt(seconds, 10))
|
|
sb.WriteString(" seconds")
|
|
}
|
|
|
|
return sb.String()
|
|
}
|