arnaucube
arnaucube/kindle-weatherPublic Self-hosted repository
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}