Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JodaTime没有';不要在周和月的不匹配日期失败_Java_Jodatime - Fatal编程技术网

Java JodaTime没有';不要在周和月的不匹配日期失败

Java JodaTime没有';不要在周和月的不匹配日期失败,java,jodatime,Java,Jodatime,在下面的代码中,我希望抛出一个异常,因为星期几与月份不匹配。我在报告中找不到任何关于对这种错误匹配“严格”的说法,但我很困惑,这样糟糕的数据是允许通过的。我是否误解了什么,或者这是一个有意识的设计决策,我应该以其他方式处理 public static void main(String[] args) { DateTimeFormatter DATE_FORMAT_LONG_DATE = // DateTimeFormat.forPattern("EEEE, d MMMM

在下面的代码中,我希望抛出一个异常,因为星期几与月份不匹配。我在报告中找不到任何关于对这种错误匹配“严格”的说法,但我很困惑,这样糟糕的数据是允许通过的。我是否误解了什么,或者这是一个有意识的设计决策,我应该以其他方式处理

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

你说得对,就像我的一样:

解析通过将每个解析字段的值从最大值到最小值“设置”到初始瞬间(通常为1970-01-01T00:00Z),从而建立结果瞬间。此设计意味着将月日设置为周日之前同样,如果分析了月日和周日,并且周日不正确,则周日将覆盖月日。如果输入不一致,则会产生副作用。


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

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

解析通过将每个解析字段的值从最大值到最小值“设置”到初始瞬间(通常为1970-01-01T00:00Z),从而建立结果瞬间。此设计意味着将月日设置为周日之前同样,如果分析了月日和周日,并且周日不正确,则周日将覆盖月日。如果输入不一致,则会产生副作用。


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

谢谢Jon-答案是DateTimeFormatter的javadocs,而不是DateTimeFormat。我们必须记住这一课!谢谢Jon-答案是DateTimeFormatter的javadocs,而不是DateTimeFormat。我们必须记住这一课!