init
This commit is contained in:
commit
7cc71fb719
13 changed files with 840 additions and 0 deletions
58
internal/challenge/timeutil.go
Normal file
58
internal/challenge/timeutil.go
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
package challenge
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
const day = 24 * time.Hour
|
||||
|
||||
func parseClock(value string) (time.Duration, error) {
|
||||
parts := strings.Split(value, ":")
|
||||
if len(parts) != 3 {
|
||||
return 0, fmt.Errorf("bad time %q", value)
|
||||
}
|
||||
h, err := strconv.Atoi(parts[0])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
m, err := strconv.Atoi(parts[1])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
s, err := strconv.Atoi(parts[2])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
if h < 0 || h > 23 || m < 0 || m > 59 || s < 0 || s > 59 {
|
||||
return 0, fmt.Errorf("bad time %q", value)
|
||||
}
|
||||
return time.Duration(h)*time.Hour + time.Duration(m)*time.Minute + time.Duration(s)*time.Second, nil
|
||||
}
|
||||
|
||||
func formatClock(d time.Duration) string {
|
||||
d %= day
|
||||
if d < 0 {
|
||||
d += day
|
||||
}
|
||||
h := int(d / time.Hour)
|
||||
d -= time.Duration(h) * time.Hour
|
||||
m := int(d / time.Minute)
|
||||
d -= time.Duration(m) * time.Minute
|
||||
s := int(d / time.Second)
|
||||
return fmt.Sprintf("%02d:%02d:%02d", h, m, s)
|
||||
}
|
||||
|
||||
func formatDuration(d time.Duration) string {
|
||||
if d < 0 {
|
||||
d = 0
|
||||
}
|
||||
h := int(d / time.Hour)
|
||||
d -= time.Duration(h) * time.Hour
|
||||
m := int(d / time.Minute)
|
||||
d -= time.Duration(m) * time.Minute
|
||||
s := int(d / time.Second)
|
||||
return fmt.Sprintf("%02d:%02d:%02d", h, m, s)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue