2 回答
TA贡献1859条经验 获得超6个赞
在 golang 中time.Time,使用RFC3339字符串表示将 JSON 编组。所以你需要自己解组你的jsonint64而不是使用time.Time它并在它之后转换:
type Model struct {
Name string `json:"name"`
Millis int64 `json:"lastModified"`
}
func (m Model) Lastmodified() time.Time {
return time.Unix(0, m.Millis * int64(time.Millisecond))
}
您也可以使用上面的特殊包装器time.Time并在那里覆盖 UnmarshalJSON:
type Model struct {
Name string `json:"name"`
Lastmodified javaTime `json:"lastModified"`
}
type javaTime time.Time
func (j *javaTime) UnmarshalJSON(data []byte) error {
millis, err := strconv.ParseInt(string(data), 10, 64)
if err != nil {
return err
}
*j = javaTime(time.Unix(0, millis * int64(time.Millisecond)))
return nil
}
TA贡献1788条经验 获得超4个赞
尝试这个:
func ParseMilliTimestamp(tm int64) time.Time {
sec := tm / 1000
msec := tm % 1000
return time.Unix(sec, msec*int64(time.Millisecond))
}
- 2 回答
- 0 关注
- 715 浏览
添加回答
举报