我意识到"周年"的概念。并且使用17
解析YY
将导致2017年1月1日的日期,但切换到18
将导致2017年12月31日,因为这是星期日,即2018年的第二周。
我不明白为什么当你添加MM
时,它似乎不会影响日期的结果,但也不会引发错误。< / p>
使用JDK 7的示例:
public static void main(String ...strings) throws Exception {
testDateFormat("0218");
testDateFormat("0418");
testDateFormat("0618");
testDateFormat("0818");
testDateFormat("1018");
}
public static void testDateFormat(String baseDate) throws Exception {
String fromFmt = "MMYY";
String toFmt = "MM-dd-yyyy";
SimpleDateFormat sdfSource = new SimpleDateFormat(fromFmt);
SimpleDateFormat sdfDest = new SimpleDateFormat(toFmt);
Date parsedDate = sdfSource.parse(baseDate);
String output = sdfDest.format(parsedDate);
System.out.println(output);
}
输出:
12-31-2017
12-31-2017
12-31-2017
12-31-2017
12-31-2017
这是预期的行为吗?即Java会忽略一周中的第一部分吗?我无法在https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
找到相关文档