From: Sergey Matveev Date: Tue, 14 Jan 2025 08:10:22 +0000 (+0300) Subject: Ability to skip TAI→UTC conversion X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=6a81f94ac4f087108f8a49c3f573b4e66dbb6a70fd9c6891366ddd9587e2da21;p=keks.git Ability to skip TAI→UTC conversion --- diff --git a/go/ctx.go b/go/ctx.go index 7546f66..148a7b8 100644 --- a/go/ctx.go +++ b/go/ctx.go @@ -39,6 +39,9 @@ type DecodeOpts struct { // Leave TAI64* values as is, do not convert to time.Time during unmarshal. LeaveTAI64 bool + // Do not convert TAI to UTC. + LeaveTAI bool + // Store items offsets. SaveOffsets bool } diff --git a/go/unmarshal.go b/go/unmarshal.go index 88f10a2..08b4943 100644 --- a/go/unmarshal.go +++ b/go/unmarshal.go @@ -94,18 +94,26 @@ func (ctx *Decoder) unmarshal(iter *Iterator) (v any, err error) { panic("float is unsupported") case types.TAI64: t := iter.TAI64() - if ctx.opts != nil && ctx.opts.LeaveTAI64 { - return t, nil - } else { - return toUTC(t.Time()) + if ctx.opts != nil { + if ctx.opts.LeaveTAI64 { + return t, nil + } + if ctx.opts.LeaveTAI { + return t.Time(), nil + } } + return toUTC(t.Time()) case types.TAI64N: t := iter.TAI64N() - if ctx.opts != nil && ctx.opts.LeaveTAI64 { - return t, nil - } else { - return toUTC(t.Time()) + if ctx.opts != nil { + if ctx.opts.LeaveTAI64 { + return t, nil + } + if ctx.opts.LeaveTAI { + return t.Time(), nil + } } + return toUTC(t.Time()) case types.TAI64NA: return iter.TAI64NA(), nil case types.Bin: