【发布时间】:2016-09-04 16:12:04
【问题描述】:
我正在尝试使用 js-joda(版本 1.1.1)中的严格分辨率从 String 解析 LocalDate。我不想接受无效日期的输入,例如2016-05-32。但我就是不明白。
我的代码是:
formatter = (new JSJoda.DateTimeFormatterBuilder)
.appendPattern("yyyy-MM-dd")
.toFormatter(JSJoda.ResolverStyle.STRICT);
JSJoda.LocalDate.parse("2016-05-10", formatter);
和错误:
Text '2016-05-10' could not be parsed: Unable to obtain LocalDate from
TemporalAccessor: [object Object], type DateTimeBuilder: 2016-05-10,
at index: 0
与ResolverStyle.LENIENT 或ResolverStyle.SMART 相同的代码在这种模式下可以正常工作。
formatter = (new JSJoda.DateTimeFormatterBuilder)
.appendPattern("yyyy-MM-dd")
.toFormatter(JSJoda.ResolverStyle.LENIENT);
JSJoda.LocalDate.parse("2016-05-32", formatter); // result 2016-06-01
如何在js-joda 中使用严格分辨率?
更新:
但是js-joda DateTimeFormatter API 没有提到这个选项,@JodaStephen 提出的模式uuuu-MM-dd 可以正常工作。 Working Js Demo
【问题讨论】:
-
在 Java 中你必须使用 uuuu-MM-dd
-
像魅力一样工作。谢谢。如果您想将其发布为答案,我会接受。它可能对其他人也有用。
标签: javascript jsr310 js-joda