Почему месяцы прочь одним с Java SimpleDateFormat?

Я использую 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

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

Спасибо

6
задан Natim 8 June 2010 в 11:38
поделиться

5 ответов

Из Java API:

public int getMonth()

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

19
ответ дан 8 December 2019 в 04:28
поделиться

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

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

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

4
ответ дан 8 December 2019 в 04:28
поделиться

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

1
ответ дан 8 December 2019 в 04:28
поделиться

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

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

1
ответ дан 8 December 2019 в 04:28
поделиться

это ваша локаль, установленная на Францию ДД/ММ/ГГ, так что это вторник, июль, 2010. 6-й месяц - июль, если он начинается с 0.

0
ответ дан 8 December 2019 в 04:28
поделиться
Другие вопросы по тегам:

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