Files
kor-elf-shield/internal/pkg/format/format.go
T

58 lines
1019 B
Go

package format
import (
"fmt"
"time"
)
func HumanBytes(n uint64) string {
const (
KB = 1024
MB = 1024 * KB
GB = 1024 * MB
TB = 1024 * GB
)
switch {
case n >= TB:
return fmt.Sprintf("%.2f TB", float64(n)/TB)
case n >= GB:
return fmt.Sprintf("%.2f GB", float64(n)/GB)
case n >= MB:
return fmt.Sprintf("%.2f MB", float64(n)/MB)
case n >= KB:
return fmt.Sprintf("%.2f KB", float64(n)/KB)
default:
return fmt.Sprintf("%d B", n)
}
}
func HumanDuration(d time.Duration) string {
d = d.Round(time.Second)
days := d / (24 * time.Hour)
d -= days * 24 * time.Hour
hours := d / time.Hour
d -= hours * time.Hour
minutes := d / time.Minute
d -= minutes * time.Minute
seconds := d / time.Second
if days > 0 {
return fmt.Sprintf("%dd %02dh %02dm %02ds", days, hours, minutes, seconds)
}
if hours > 0 {
return fmt.Sprintf("%dh %02dm %02ds", hours, minutes, seconds)
}
if minutes > 0 {
return fmt.Sprintf("%dm %02ds", minutes, seconds)
}
return fmt.Sprintf("%ds", seconds)
}