1
0
mirror of https://github.com/json-iterator/go.git synced 2025-12-02 22:48:20 +02:00

#67 time as int64 with decoder

This commit is contained in:
Tao Wen
2017-06-20 17:52:41 +08:00
parent cefb2972fd
commit 83fa27ff9a
2 changed files with 13 additions and 2 deletions

View File

@@ -9,11 +9,16 @@ import (
// keep epoch milliseconds
func RegisterTimeAsInt64Codec(precision time.Duration) {
jsoniter.RegisterTypeEncoder("time.Time", &timeAsInt64Codec{precision})
jsoniter.RegisterTypeDecoder("time.Time", &timeAsInt64Codec{precision})
}
type timeAsInt64Codec struct {
precision time.Duration
}
func (codec *timeAsInt64Codec) Decode(ptr unsafe.Pointer, iter *jsoniter.Iterator) {
nanoseconds := iter.ReadInt64() * codec.precision.Nanoseconds()
*((*time.Time)(ptr)) = time.Unix(0, nanoseconds)
}
func (codec *timeAsInt64Codec) IsEmpty(ptr unsafe.Pointer) bool {
ts := *((*time.Time)(ptr))