1234567891011121314151617181920212223242526272829303132333435363738 |
- package jsontype
- import (
- "encoding/json"
- "time"
- "github.com/globalsign/mgo/bson"
- )
- type MilliTime struct {
- time.Time
- }
- func (mt MilliTime) MarshalJSON() ([]byte, error) {
- return json.Marshal(mt.Milli())
- }
- func (mt *MilliTime) UnmarshalJSON(data []byte) error {
- var milli int64
- if err := json.Unmarshal(data, &milli); err != nil {
- return err
- } else {
- mt.Time = time.Unix(0, milli*int64(time.Millisecond))
- return nil
- }
- }
- func (mt MilliTime) GetBSON() (interface{}, error) {
- return mt.Time, nil
- }
- func (mt *MilliTime) SetBSON(raw bson.Raw) error {
- return raw.Unmarshal(&mt.Time)
- }
- func (mt MilliTime) Milli() int64 {
- return mt.UnixNano() / int64(time.Millisecond)
- }
|