I have a some json data where there is a field called lastModifed contains time in millis. I wanted to convert this data into a struct type with json.UnMarshaller. I have mapped the field with json filed. But the conversion seems not working.
IE :
My Json looks like this:
{ "name" : "hello", "lastModified" : 1438167001716 }
and struct Looks like
type Model struct { Name string `json:"name"` Lastmodified time.Time `json:"lastModified"` }
looks not converting the time properly. how can i get the time from those millis??
NB: The millis of lastModifiedTime are getting from java System.currentTimeMillis();
To convert milliseconds to hours, minutes, seconds:Divide the milliseconds by 1000 to get the seconds. Divide the seconds by 60 to get the minutes. Divide the minutes by 60 to get the hours. Add a leading zero if the values are less than 10 to format them consistently.
Duration has a base type int64. Duration represents the elapsed time between two instants as an int64 nanosecond count”. The maximum possible nanosecond representation is up to 290 years.
In golang time.Time
marshals to JSON using RFC3339, string representation. So you need to unmarshal your json using int64
instead of time.Time
and convert after it by yourself:
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)) }
Go playground
Also you can use special wrapper above time.Time
and override UnmarshalJSON there:
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 }
Go playground
Try this:
func ParseMilliTimestamp(tm int64) time.Time { sec := tm / 1000 msec := tm % 1000 return time.Unix(sec, msec*int64(time.Millisecond)) }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With