Files
go-garth-cli/python-garmin-connect/connect/tools.go
2025-09-21 11:03:52 -07:00

71 lines
1.1 KiB
Go

package main
import (
"fmt"
"strconv"
"time"
)
func formatDate(t time.Time) string {
if t == (time.Time{}) {
return "-"
}
return fmt.Sprintf("%04d-%02d-%02d", t.Year(), t.Month(), t.Day())
}
func stringer(value interface{}) string {
stringer, ok := value.(fmt.Stringer)
if ok {
return stringer.String()
}
str := ""
switch v := value.(type) {
case string:
str = v
case int, int64:
str = fmt.Sprintf("%d", v)
case float64:
str = strconv.FormatFloat(v, 'f', 1, 64)
case bool:
if v {
str = gotIt
}
default:
panic(fmt.Sprintf("no idea what to do about %T:%v", value, value))
}
return str
}
func sliceStringer(values []interface{}) []string {
ret := make([]string, len(values))
for i, value := range values {
ret[i] = stringer(value)
}
return ret
}
func hoursAndMinutes(dur time.Duration) string {
if dur == 0 {
return "-"
}
if dur < 60*time.Minute {
m := dur.Truncate(time.Minute)
return fmt.Sprintf("%dm", m/time.Minute)
}
h := dur.Truncate(time.Hour)
m := (dur - h).Truncate(time.Minute)
h /= time.Hour
m /= time.Minute
return fmt.Sprintf("%dh%dm", h, m)
}