JodaTime在一周和一个月不匹配的日子里没有失败

时间:2016-05-01 11:37:20

标签: java jodatime

在下面的一段代码中,我预计会抛出异常,因为星期几与月中的某一天不匹配。我无法在DateTimeFormat Javadocs中找到任何关于存在"严格"在这种不匹配的情况下,但我很困惑,这些糟糕的数据被允许通过。我是否误解了任何事情,或者这是一个有意识的设计决定,我应该以其他方式处理?

public static void main(String[] args) {
   DateTimeFormatter DATE_FORMAT_LONG_DATE = //
         DateTimeFormat.forPattern("EEEE, d MMMM yyyy")//
               .withZone(DateTimeZone.forID("Australia/Melbourne"));
   final String text = "Friday, 1 February 2016"; // Wrong.
   final DateTime parsed = DATE_FORMAT_LONG_DATE.parseDateTime(text);
   System.out.println(text);
   System.out.println(DATE_FORMAT_LONG_DATE.print(parsed));
}

并输出:

Friday, 1 February 2016
Friday, 5 February 2016

1 个答案:

答案 0 :(得分:4)

你是对的,确实如此 - documented(强调我的):

  

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

我同意这是不幸的 - 但您可以随后重新格式化并检查值是否不同。