JodaTime允许无效日期

时间:2018-03-21 09:42:42

标签: java jodatime

我预计这会引发异常,因为2016年2月1日不是星期五:

final DateTimeFormatter formatter = DateTimeFormat.forPattern("EEEE, d MMMM yyyy");
final DateTime date = formatter.parseDateTime("Friday, 1 February 2016");
System.out.println(formatter.print(date));

相反,它打印出Friday, 5 February 2016。我在这里缺少什么?

1 个答案:

答案 0 :(得分:5)

在文档(http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormatter.html

中对此进行了解释
  

解析通过设置'来构建生成的瞬间。每个解析字段的值从最大到最小到初始时刻,通常是1970-01-01T00:00Z。此设计意味着每周的日期设置在星期几之前。因此,如果解析了星期几和星期几,并且星期几不正确,则然后星期几将覆盖日期。如果输入不一致,则会产生副作用。