为什么Java中的MMYY被翻译成错误的日期?

时间:2017-11-09 18:04:17

标签: java

我意识到"周年"的概念。并且使用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

找到相关文档

0 个答案:

没有答案