From 6a81f94ac4f087108f8a49c3f573b4e66dbb6a70fd9c6891366ddd9587e2da21 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Tue, 14 Jan 2025 11:10:22 +0300 Subject: [PATCH] =?utf8?q?Ability=20to=20skip=20TAI=E2=86=92UTC=20conversi?= =?utf8?q?on?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- go/ctx.go | 3 +++ go/unmarshal.go | 24 ++++++++++++++++-------- 2 files changed, 19 insertions(+), 8 deletions(-) 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: -- 2.50.0