我正在从 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;
}
并且,对于来自 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
显然,它正确地选择了日期和年份(如果我选择包括小时/分钟/秒,它也正确地包括那些),但由于某种原因,每个日期都被放置在一月份。
现在,我确信我的错误是一个非常简单的错误,但我已经重新检查了我的格式大约十次,而且我已经看不到它了。第二双眼睛能否有希望地查看我的代码并指出我哪里出错了,让月份如此严重不正确?
谢谢。