summaryrefslogtreecommitdiff
path: root/go/clock/clock.go
blob: 036a69bbd23aa7c85f02fc368ac9d82b0f272761 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package clock

import "fmt"

const testVersion = 4

type Clock struct {
	hour, minute int
}

func New(hour, minute int) Clock {
	for minute < 0 {
		minute += 60
		hour -= 1
	}
	hour += minute / 60
	for hour < 0 {
		hour += 24
	}
	return Clock{hour % 24, minute % 60}
}

func (c Clock) String() string {
	return fmt.Sprintf("%02d:%02d", c.hour, c.minute)
}

func (c Clock) Add(minutes int) Clock {
	return New(c.hour, c.minute+minutes)
}