golang json的元帅时间戳

I tries to json.UnMarshal self defined type TimeStamp and meet an accuracy problem.Here is the Example:

type TimeStamp  int64
type D struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
    Ts  TimeStamp   `json:"ts"`
}

func (d TimeStamp) MarshalJSON() ([]byte, error){
    rs :=time.Unix(int64(d),0).Format("2006-01-02")
    js,er := json.Marshal(rs)
    return js,er
}
func (d *TimeStamp) UnmarshalJSON(data []byte) error{
    var rs string
    e := json.Unmarshal(data,&rs)
    if e!=nil{
        return e
    }
    t,er:= time.Parse("2006-01-02", rs)
    if er!=nil{
        return er
    }
    *d = TimeStamp(t.UnixNano())
    return nil
}
func main() {
    d :=D{
        Name:"ft",
        Age:9,
        Ts: (TimeStamp)(time.Now().Unix()),
    }
    js,er:=json.Marshal(d)
    if er!=nil{
        fmt.Println(er.Error())
        return
    }
    fmt.Println("result:",string(js))

    var d2 D
    e:=json.Unmarshal(js,&d2)
    if e!=nil{
        fmt.Println(er.Error())
        return
    }
    fmt.Println("result:",d2)
    fmt.Println(time.Now().Unix())
    fmt.Println(d2.Ts)
}

I get the result like:

result: {"name":"ft","age":9,"ts":"2018-09-30"}
result: {ft 9 1538265600000000000}
1538272374
1538265600000000000

As you can see, unmarshal timestamp has a long tail . 1538265600000000000 how to deal with it

I'sorry because its the difference between unix() and unixnano()