package marshalutil import ( "time" ) // WriteTime marshals the given time into a sequence of bytes, that get appended to the internal buffer. func (util *MarshalUtil) WriteTime(timeToWrite time.Time) { nanoSeconds := timeToWrite.UnixNano() // the zero value of time translates to -6795364578871345152 if nanoSeconds == -6795364578871345152 { util.WriteInt64(0) } else { util.WriteInt64(timeToWrite.UnixNano()) } } // ReadTime unmarshals a time object from the internal read buffer. func (util *MarshalUtil) ReadTime() (result time.Time, err error) { nanoSeconds, err := util.ReadInt64() if err != nil { return } if nanoSeconds == 0 { result = time.Time{} } else { result = time.Unix(0, nanoSeconds) } return }