Я использую 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
Это не может быть возможно? Почему?
Спасибо
Из Java API:
public int getMonth()
Возвращает число, представляющее месяц, который содержит или начинается с момента времени, представленного данным объектом Date. Возвращаемое значение находится в диапазоне от 0 до 11, при этом значение 0 представляет январь.
К сожалению, месяцы в классе Дата
и классе Календарь
отсчитываются от нуля. (На мой взгляд, это была огромная ошибка дизайна этих классов, и это всего лишь одна из многих ошибок дизайна в API даты и времени Java).
Обратите внимание, что класс Calendar
имеет константы для представления месяцев: Calendar.JANUARY
, Calendar.FEBRUARY
и т. Д. Используйте их вместо необработанных чисел.
Часто упоминаемый, гораздо лучший API даты и времени для Java - это Joda Time . Обратите внимание, что есть предложение добавить новый API даты и времени в следующую версию Java, которая будет основана на Joda Time.
индекс месяца начинается с 0 так же, как индекс массива
метод getMonth в Date имеет индекс 0. из JavaDoc:
Возвращает число, представляющее месяц, который содержит или начинается с момента времени, представленного этим объектом Date. Возвращаемое значение находится в диапазоне от 0 до 11, причем значение 0 представляет январь.
это ваша локаль, установленная на Францию ДД/ММ/ГГ, так что это вторник, июль, 2010. 6-й месяц - июль, если он начинается с 0.