Java SimpleDateFormat всегда возвращает январь за месяц

Я работаю над тем, чтобы взять значение даты (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:

Значение из AD: 20050912190509.0Z

Форматированная строка: 2005/09/12

Конечная строка даты : Ср 12 января 00:00:00 EST 2005

Очевидно, что он правильно выбирает день и год (и если я решу включить часы / минуты / секунды, то они также правильно включают и их), но каждый дата по какой-то причине помещается в январе.

Теперь я уверен, что моя ошибка довольно проста, но я перепроверил свое форматирование примерно десять раз, и я нахожусь в точке, где Я просто больше не вижу этого. Может ли вторая пара глаз, надеюсь, просмотреть мой код и указать, где я ошибаюсь, чтобы получить месяц с такой грубой ошибкой?

Спасибо.

21
задан EricBoersma 24 August 2010 в 19:29
поделиться

1 ответ

Изменить строку шаблона с "yyyy/MM/DD " на "гггг/мм/дд"

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
50
ответ дан 29 November 2019 в 06:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: