Ich versuche, eine LocalDate
von einer String
mit strenger Auflösung in js-joda
(Version 1.1.1) zu analysieren. Ich möchte keine Eingaben akzeptieren, die keine gültigen Daten sind, wie 2016-05-32
. Aber ich verstehe es einfach nicht.Wie strenge LocalDate Parsing in js-joda zu tun?
Mein Code ist:
formatter = (new JSJoda.DateTimeFormatterBuilder)
.appendPattern("yyyy-MM-dd")
.toFormatter(JSJoda.ResolverStyle.STRICT);
JSJoda.LocalDate.parse("2016-05-10", formatter);
und der Fehler:
Text '2016-05-10' could not be parsed: Unable to obtain LocalDate from
TemporalAccessor: [object Object], type DateTimeBuilder: 2016-05-10,
at index: 0
Der gleiche Code mit ResolverStyle.LENIENT
oder ResolverStyle.SMART
funktioniert, wie es für diese Modi erwartet wird.
formatter = (new JSJoda.DateTimeFormatterBuilder)
.appendPattern("yyyy-MM-dd")
.toFormatter(JSJoda.ResolverStyle.LENIENT);
JSJoda.LocalDate.parse("2016-05-32", formatter); // result 2016-06-01
Wie kann ich strenge Auflösung in js-joda
verwenden?
aktualisieren:
jedoch die js-joda DateTimeFormatter API diese Option nicht erwähnen, das Muster uuuu-MM-dd
von @JodaStephen vorgeschlagen funktioniert gut. Working Js Demo
|Symbol |Meaning |Presentation |Examples |--------|----------------------------|------------------|--------------- | G | era | number/text | 1; 01; AD; Anno Domini | y | year | year | 2004; 04 | D | day-of-year | number | 189 | M | month-of-year | number/text | 7; 07; Jul; July; J
Symbol Meaning Presentation Examples ------ ------- ------------ ------- G era text AD; Anno Domini; A u year year 2004; 04 y year-of-era year 2004; 04 D day-of-year number 189
In Java müssen Sie Uuuu-MM-dd verwenden – JodaStephen
Funktioniert wie ein Charme. Vielen Dank. Wenn du es als Antwort posten willst, werde ich es akzeptieren. Es kann auch für andere nützlich sein. –