Я работаю над тем, чтобы присвоить значение даты (createWhen) из Active Directory и перевести его на дату 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
Очевидно, что он правильно подбирает день и год (и если я предпочитаю включать часы/минуты/секунды, он включает их также правильно), но каждая дата помещается в январе по какой-либо причине.
Теперь я уверен, что моя ошибка довольно простая, но я перепроверяла свое форматирование примерно десять раз, и я нахожусь в точке, где я просто не могу ее больше увидеть. Может ли вторая пара глаз, надеюсь, просмотреть мой код и указать, где я ошибаюсь, чтобы сделать месяц настолько грубо неправильным?
Спасибо.