Skip to content

Commit 5e03173

Browse files
committed
Keep formats as constants and use dispatch rather than dict lookup.
1 parent 2fc84d8 commit 5e03173

File tree

1 file changed

+15
-14
lines changed

1 file changed

+15
-14
lines changed

src/parsing.jl

+15-14
Original file line numberDiff line numberDiff line change
@@ -257,23 +257,24 @@ end
257257

258258
# ISO, YMD
259259
_DEFAULT_TYPE_MAP[:timestamptz] = ZonedDateTime
260-
const TIMESTAMPTZ_FORMATS = Dict(
261-
ZonedDateTime => (
262-
dateformat"y-m-d HH:MM:SSz",
263-
dateformat"y-m-d HH:MM:SS.sz",
264-
dateformat"y-m-d HH:MM:SS.ssz",
265-
dateformat"y-m-d HH:MM:SS.sssz",
266-
),
267-
UTCDateTime => (
268-
dateformat"y-m-d HH:MM:SS",
269-
dateformat"y-m-d HH:MM:SS.s",
270-
dateformat"y-m-d HH:MM:SS.ss",
271-
dateformat"y-m-d HH:MM:SS.sss",
272-
),
260+
const TIMESTAMPTZ_ZDT_FORMATS = (
261+
dateformat"y-m-d HH:MM:SSz",
262+
dateformat"y-m-d HH:MM:SS.sz",
263+
dateformat"y-m-d HH:MM:SS.ssz",
264+
dateformat"y-m-d HH:MM:SS.sssz",
273265
)
266+
const TIMESTAMPTZ_UTC_FORMATS = (
267+
dateformat"y-m-d HH:MM:SS",
268+
dateformat"y-m-d HH:MM:SS.s",
269+
dateformat"y-m-d HH:MM:SS.ss",
270+
dateformat"y-m-d HH:MM:SS.sss",
271+
)
272+
273+
timestamptz_formats(::Type{ZonedDateTime}) = TIMESTAMPTZ_ZDT_FORMATS
274+
timestamptz_formats(::Type{UTCDateTime}) = TIMESTAMPTZ_UTC_FORMATS
274275

275276
function _pqparse(::Type{T}, str::AbstractString) where T<:Union{UTCDateTime, ZonedDateTime}
276-
formats = TIMESTAMPTZ_FORMATS[T]
277+
formats = timestamptz_formats(T)
277278
for fmt in formats[1:(end - 1)]
278279
parsed = tryparse(T, str, fmt)
279280
parsed !== nothing && return parsed

0 commit comments

Comments
 (0)