(defn- get-optional-formatter
""
[]
(-> (DateTimeFormatterBuilder.)
(. parseCaseInsensitive)
(. append (DateTimeFormatter/ISO_LOCAL_DATE_TIME))
(. optionalStart)
(. appendOffsetId)
(. toFormatter)))
(defn ^TemporalQuery as-temporal-query [f]
(reify TemporalQuery
(queryFrom [_ arg] (f arg))))
(defn parse
""
[s]
(let [^TemporalQuery query (as-temporal-query #((. OffsetDateTime from %1)))
temporal
(.parseBest
(get-optional-formatter)
s
(into-array query))]))
И там с билдером в get optional formatter вроде вместо тред макроса можно doto использовать, но это не точно, и не принципиально )