kindle-weather/time.go
time.goRaw
1package main
2
3import (
4 "fmt"
5 "strconv"
6 "time"
7)
8
9func unmarshalTime(s []byte) (time.Time, error) {
10 r := string(s)
11 q, err := strconv.ParseInt(r, 10, 64)
12 if err != nil {
13 return time.Now(), err
14 }
15 return time.Unix(q, 0), nil
16}
17
18type CurrentDate time.Time
19
20func (t *CurrentDate) UnmarshalJSON(s []byte) (err error) {
21 *(*time.Time)(t), err = unmarshalTime(s)
22 return err
23}
24func (t CurrentDate) String() string {
25 return time.Time(t).Format("2006-01-02, 15h")
26}
27
28type HourOnly time.Time
29
30func (t *HourOnly) UnmarshalJSON(s []byte) (err error) {
31 *(*time.Time)(t), err = unmarshalTime(s)
32 return err
33}
34func (t HourOnly) String() string {
35 return time.Time(t).Format("15h")
36}
37
38type Day time.Time
39
40func (t *Day) UnmarshalJSON(s []byte) (err error) {
41 *(*time.Time)(t), err = unmarshalTime(s)
42 return err
43}
44func (t Day) String() string {
45 return time.Time(t).Format("Mon")
46}
47
48type Hour time.Time
49
50func (t *Hour) UnmarshalJSON(s []byte) (err error) {
51 *(*time.Time)(t), err = unmarshalTime(s)
52 return err
53}
54func (t Hour) String() string {
55 return time.Time(t).Format("15:04:05")
56}
57
58type Temperature float64
59
60func (t Temperature) String() string {
61 return fmt.Sprintf("%.0f", t)
62}