|
|
package main
import ( "fmt" "strconv" "time" )
func unmarshalTime(s []byte) (time.Time, error) { r := string(s) q, err := strconv.ParseInt(r, 10, 64) if err != nil { return time.Now(), err } return time.Unix(q, 0), nil }
type CurrentDate time.Time
func (t *CurrentDate) UnmarshalJSON(s []byte) (err error) { *(*time.Time)(t), err = unmarshalTime(s) return err } func (t CurrentDate) String() string { return time.Time(t).Format("2006-01-02, 15h") }
type HourOnly time.Time
func (t *HourOnly) UnmarshalJSON(s []byte) (err error) { *(*time.Time)(t), err = unmarshalTime(s) return err } func (t HourOnly) String() string { return time.Time(t).Format("15h") }
type Day time.Time
func (t *Day) UnmarshalJSON(s []byte) (err error) { *(*time.Time)(t), err = unmarshalTime(s) return err } func (t Day) String() string { return time.Time(t).Format("Mon") }
type Hour time.Time
func (t *Hour) UnmarshalJSON(s []byte) (err error) { *(*time.Time)(t), err = unmarshalTime(s) return err } func (t Hour) String() string { return time.Time(t).Format("15:04:05") }
type Temperature float64
func (t Temperature) String() string { return fmt.Sprintf("%.0f", t) }
|