Java SimpleDateFormat 解析奇数结果

Java SimpleDateFormat parsing odd result

我有一个关于 Class SimpleDateFormat 的问题。 我想转换日期字符串的格式。 日期是 21.11.2011,我希望将其转换为 111121。

这是我的代码:

public class Main {

private static final SimpleDateFormat oldSimpleDateFormat = new SimpleDateFormat("dd.MM.YYYY");
private static final SimpleDateFormat newSimpleDateFormat = new SimpleDateFormat("YYMMdd");
private static String oldDate = "21.11.2011";
private static Date myDate = oldSimpleDateFormat.parse(oldDate, new ParsePosition(0));
private static String newDate = newSimpleDateFormat.format(myDate);

public static void main(String[] args){
    System.out.println(myDate);
    System.out.println(newDate);
}
}

控制台中的结果是 Mon Jan 03 00:00:00 CET 2011 和 110103。 所以格式化部分工作正常,但解析部分不符合预期。

当您应该使用 yyyy(小写)时,您却使用了 YYYY(大写)。

Y 表示 "Week year"。 y 表示 "year".

检查 SimpleDateFormat 的 javadoc。这通常是 uppercase/lowercase 个用于不同事物的字母的问题。在这种情况下,大写 Y 代表 "week year"(无论是什么),小写 y 代表 "year"。将 Y 更改为 y 即可。