Skip to content

When using java-time.api/formatter: java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: InstantSeconds #112

Open
@devurandom

Description

@devurandom
(jt/instant (jt/formatter "YYYYMMdd'T'HHmmssX" {:resolver-style :lenient
                                                :case           :insensitive})
            "20240611T131542Z")
; throws:
; java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: InstantSeconds
;                         java.time.DateTimeException: Unable to obtain Instant from TemporalAccessor: {MonthOfYear=6, WeekBasedYear[WeekFields[SUNDAY,1]]=2024, DayOfMonth=11, OffsetSeconds=0},ISO resolved to 13:15:42 of type java.time.format.Parsed
;                          clojure.lang.ExceptionInfo: Conversion failed

On the other hand:

(jt/instant (-> (.toFormatter (doto (DateTimeFormatterBuilder.)
                                (.parseLenient)
                                (.parseCaseInsensitive)
                                (.appendValue ChronoField/YEAR 4)
                                (.appendValue ChronoField/MONTH_OF_YEAR 2)
                                (.appendValue ChronoField/DAY_OF_MONTH 2)
                                (.appendLiteral "T")
                                (.appendValue ChronoField/HOUR_OF_DAY 2)
                                (.appendValue ChronoField/MINUTE_OF_HOUR 2)
                                (.appendValue ChronoField/SECOND_OF_MINUTE 2)
                                (.appendOffset "+HHMMss" "Z")))
                (.withZone (ZoneId/of "UTC")))
            "20240611T131542Z")
;=> #object[java.time.Instant 0x52b9aba9 "2024-06-11T13:15:42Z"]

I would have expected both formatters to be (more or less) equivalent.

(My aim is to build a formatter and parser for the ISO 8601 "basic" format, as opposed to the "extended" format containing dashes and colons. All values need to be in the UTC timezone.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions