Java SimpleDateFormat总是每月返回一月

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

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;}

并且,对于来自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月。

现在,我确定我的错误是一个非常简单的错误,但是我已经对格式进行了大约十次的重新检查,现在我再也看不到它了。希望第二只眼睛能看一下我的代码并指出我要去哪里出错以至于使本月如此严重不正确吗?

谢谢。


收到一只叮咚
浏览 659回答 3
3回答

慕少森

确保不使用“ mm”代替“ MM”或“ MMM”。小m代表分钟,大写M代表月。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java