...
1
2
3
4
5
6 package github
7
8 import (
9 "strconv"
10 "time"
11 )
12
13
14
15
16
17 type Timestamp struct {
18 time.Time
19 }
20
21 func (t Timestamp) String() string {
22 return t.Time.String()
23 }
24
25
26
27 func (t *Timestamp) UnmarshalJSON(data []byte) (err error) {
28 str := string(data)
29 i, err := strconv.ParseInt(str, 10, 64)
30 if err == nil {
31 t.Time = time.Unix(i, 0)
32 if t.Time.Year() > 3000 {
33 t.Time = time.Unix(0, i*1e6)
34 }
35 } else {
36 t.Time, err = time.Parse(`"`+time.RFC3339+`"`, str)
37 }
38 return
39 }
40
41
42 func (t Timestamp) Equal(u Timestamp) bool {
43 return t.Time.Equal(u.Time)
44 }
45
View as plain text