Java SimpleDateFormat总是返回1月份的月份

Eri*_*sma 21 java active-directory simpledateformat

我正在努力从Active Directory中获取日期值(createWhen),并将其转换为Java日期,以获取在两个日期之间创建的帐户列表.一切都工作正常,除了一种方法:从AD日期到Java日期的方法.该方法如下所示:

private Date getParsedDate(String givenString) {
    System.out.println("Value from AD is: " + givenString);
    Date parsedDate = null;
    String formattedString = this.formatDateString(givenString);
    System.out.println("Formatted String is: " + formattedString);
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/DD");
    try {
        parsedDate = sdf.parse(formattedString);
        System.out.println("Final date string is: " + parsedDate.toString());
    } catch (ParseException ex) {
        ex.printStackTrace();
    }
    return parsedDate;
}
Run Code Online (Sandbox Code Playgroud)

并且,对于来自AD的单个任意数据:

Value from AD is: 20050912190509.0Z

Formatted String is: 2005/09/12

Final date string is: Wed Jan 12 00:00:00 EST 2005

显然,它正确地提取了日期和年份(如果我选择包括小时/分钟/秒,它也包括正确的那些),但是由于某种原因,每个日期都在1月份.

现在,我确定我的错误是一个非常简单的错误,但我已经重新检查了我的格式十次,而我正处于我再也看不到它的地步.第二双眼睛是否可以查看我的代码并指出我错误的地方让这个月变得非常不正确?

谢谢.

小智 50

将模式字符串从"yyyy/MM/DD"更改为"yyyy/MM/dd"

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Run Code Online (Sandbox Code Playgroud)


Rid*_*han 5

确保不要使用'mm'而不是'MM'或'MMM'.小m代表分钟,大写M代表月份.