Java的“周年”到底是如何工作的?定义各不相同国际标准化组织 ISO 8601java.timeorg.threeten.extra.YearWeek关于 java.time
这开始是一个简单的错误:我没有在我的格式字符串中为对象。但是我对格式不正确的字符串的测试结果完全感到困惑。YYYY
yyyy
SimpleDateFormat
此代码:
@Test
public void whatTheHell() {
try {
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/YYYY");
Date d1 = sdf.parse("01/07/2016");
Date d2 = sdf.parse("02/08/2016");
Date d3 = sdf.parse("11/29/2027");
System.out.println(d1.toString());
System.out.println(d2.toString());
System.out.println(d3.toString());
} catch (ParseException pe) {
fail("ParseException: " + pe.getMessage());
}
}
产生以下输出:
Sun Dec 27 00:00:00 PST 2015
Sun Dec 27 00:00:00 PST 2015
Sun Dec 27 00:00:00 PST 2026
我已经阅读了此处有关“Y”参数的文档:https://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html,但我仍然看不到此处有效的逻辑。特别是最后一个例子:我可以有点理解如何将1月(也许是2月)的日期翻译成前一年的12月,但是将11月29日的日期向后移动11个月让我感到困惑。12月27日有什么特别之处?
谁能解释一下?
更多信息
@Jan建议依赖toString()方法可能是一个问题,所以我定义了一个日期格式,以与上面相同的代码打印。以下是附加输出:YYYY MM dd '-' yyyy MM dd
2016 12 27 - 2015 12 27
2016 12 27 - 2015 12 27
2027 12 27 - 2026 12 27