Better stringification of play times longer than 1 hr
This commit is contained in:
+37
-1
@@ -32,7 +32,7 @@ func MakeOpaque(c color.Color) color.Color {
|
||||
return c
|
||||
}
|
||||
|
||||
func SecondsToTimeString(s float64) string {
|
||||
func SecondsToMMSS(s float64) string {
|
||||
if s < 0 {
|
||||
s = 0
|
||||
}
|
||||
@@ -43,6 +43,42 @@ func SecondsToTimeString(s float64) string {
|
||||
return fmt.Sprintf("%d:%02d", min, sec)
|
||||
}
|
||||
|
||||
func SecondsToTimeString(s float64) string {
|
||||
if s < 3600 /*1 hour*/ {
|
||||
return SecondsToMMSS(s)
|
||||
}
|
||||
sec := int64(s)
|
||||
days := sec / 86400
|
||||
sec -= days * 86400
|
||||
hr := sec / 3600
|
||||
sec -= hr * 3600
|
||||
min := sec / 60
|
||||
sec -= min * 60
|
||||
|
||||
var str string
|
||||
if days > 0 {
|
||||
daysStr := "days"
|
||||
if days == 1 {
|
||||
daysStr = "day"
|
||||
}
|
||||
str = fmt.Sprintf("%d %s ", days, daysStr)
|
||||
}
|
||||
if hr > 0 {
|
||||
hrStr := "hrs"
|
||||
if hr == 1 {
|
||||
hrStr = "hr"
|
||||
}
|
||||
str += fmt.Sprintf("%d %s ", hr, hrStr)
|
||||
}
|
||||
if min > 0 {
|
||||
str += fmt.Sprintf("%d min ", min)
|
||||
}
|
||||
if sec > 0 {
|
||||
str += fmt.Sprintf("%d sec ", sec)
|
||||
}
|
||||
return str[:len(str)-1]
|
||||
}
|
||||
|
||||
func BytesToSizeString(bytes int64) string {
|
||||
var num float64
|
||||
var suffix string
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package util
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestSecondsToTimeString(t *testing.T) {
|
||||
inputs := []float64{
|
||||
57.2,
|
||||
3360,
|
||||
4800,
|
||||
4812,
|
||||
86401,
|
||||
}
|
||||
outputs := []string{
|
||||
"0:57",
|
||||
"56:00",
|
||||
"1 hr 20 min",
|
||||
"1 hr 20 min 12 sec",
|
||||
"1 day 1 sec",
|
||||
}
|
||||
for i, input := range inputs {
|
||||
if s := SecondsToTimeString(input); s != outputs[i] {
|
||||
t.Errorf("got %s, want %s", s, outputs[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user