Почему месяцы выходных на один с Java SimpleDateFormat? - PullRequest
6 голосов
/ 07 июня 2010

Я использую SimpleDateFormat для отображения календаря следующим образом:

public String getDate()
{
    String DATE_FORMAT = "EEEE, dd/MM/yyyy HH:mm:ss";
    SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
    System.err.println(date.getTime().getMonth());
    return sdf.format(date.getTime());
}

Оболочка возвращает 6 и на дисплее: mardi, 06/07/2010 12:44:52

Это не может быть возможно? Почему?

Спасибо

Ответы [ 5 ]

19 голосов
/ 07 июня 2010

Из Java API :

public int getMonth ()

Возвращает число, представляющее месяц, который содержит или начинается с момента времени, представленного этим объектом Date. Возвращаемое значение находится в диапазоне от 0 до 11, при этом значение 0 представляет январь.

4 голосов
/ 07 июня 2010

К сожалению, месяцы в классе Date и классе Calendar начинаются с нуля. (На мой взгляд, это была огромная ошибка проектирования в этих классах, и это только одна из многих ошибок проектирования в API даты и времени Java).

Обратите внимание, что класс Calendar имеет константы для представления месяцев: Calendar.JANUARY, Calendar.FEBRUARY и т. Д. Используйте их вместо необработанных чисел.

Часто упоминаемый, гораздо лучший API даты и времени для Java: Joda Time . Обратите внимание, что есть предложение добавить новый API даты и времени в следующую версию Java, которая будет основана на Joda Time.

1 голос
/ 07 июня 2010

индекс месяца начинается с 0 так же, как индекс массива

1 голос
/ 07 июня 2010

метод getMonth в Date проиндексирован на 0. из JavaDoc:

Возвращает число, представляющее месяц, который содержит или начинается с момента времени, представленного этим объектом Date. Возвращаемое значение находится в диапазоне от 0 до 11, при этом значение 0 представляет январь.

0 голосов
/ 07 июня 2010

это ваша локаль, установленная на францию ​​DD / MM / YY, так что это вторник, июль 2010 года. 6-й месяц - июль, если он начинается с 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...