如何在js-joda中进行严格的LocalDate解析



我试图在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.LENIENTResolverStyle.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演示

更新

然而,js-joda DateTimeFormatter API没有提到这个选项,@JodaStephen提出的模式uuuu-MM-dd运行良好。工作Js演示

js-joda-api:

|符号|含义|演示文稿|示例|--------|----------------------------|------------------|---------------|G|era |数字/文本|1;01;公元安诺·多米尼克|2004年;04|D|年月日|编号|189|M |年份|数字/文本|7;07;七月七月J

Java api:

符号含义表示示例----------------------------G时代文字广告;安诺·多米尼克;A.u 2004年;04y纪元2004年;04一年中的第189天

模式"yyyy-MM-dd"在STRICT模式中是不完整的,因为它没有提供时代。请改用"uuuu-MM-dd"模式。

您可以简单地使用LocalDate.parse函数而不指定格式化程序。

LocalDate.parse('2016-05-10');  // '2016-05-10'
LocalDate.parse('2016-05-32');  // throws a DateTimeParseException

最新更新