go-playground / webhooks

:fishing_pole_and_fish: Webhook receiver for GitHub, Bitbucket, GitLab, Gogs
MIT License
956 stars 237 forks source link

[DockerHub] use float64 instead of float32 for time fields #116

Open tom24d opened 4 years ago

tom24d commented 4 years ago

I consider this is not a bug, it's UX thing.

When I run simple golang:

type A struct{
    PushedAt float32 `json:"pushed_at"`
}

func main() {
    unixT := float32(1.5229495e+09)
    a := A{
        PushedAt: unixT,
    }
    b, _ := json.Marshal(a)
    var c A
    json.Unmarshal([]byte(b), &c)
    fmt.Printf("%+v\n", a)
    fmt.Printf("%+v\n", c)
    fmt.Printf("%d\n", int64(a.PushedAt))
}

then I got the output:

{PushedAt:1.5229495e+09}
{PushedAt:1.5229495e+09}
1522949504

You can see there is a diff when converting a.PushedAt into int64. When I use this number with time.Unix(sec int64, nsec int64), this makes severe difference of the time. If we use float64 then we can get right answer.

How about using float64 instead?? Any pointers would much be appreciated.

Regards,