Проблемы с календарем в BlackBerry Java - PullRequest
0 голосов
/ 13 июля 2011
cal.set(Calendar.MONTH, 7);
cal.set(Calendar.DATE,13);
cal.set(Calendar.HOUR_OF_DAY, 11);
cal.set(Calendar.MINUTE, 1);
cal.set(Calendar.SECOND, 1);
cal.set(Calendar.YEAR, 2011);
cal.setTimeZone(TimeZone.getDefault()/*getTimeZone("GMT+5:30")*/);

Я использую приведенный выше код для установки даты и времени, но после установки, если я пытаюсь получить его по cal.getTime (), я получаю дату и время как

sat Aug 13 11:01:01 America/NewYork 2011

Ответы [ 3 ]

3 голосов
/ 13 июля 2011

Да, это именно то, что вы установили.

Если вы ожидали, что это будет июль, вам нужно прочитать JavaDoc для Calendar.MONTH более подробно - на основе 0:

Номер поля для получения и установки с указанием месяца. Это значение для календаря. Первый месяц года в григорианском и юлианском календарях - ЯНВАРЬ, который равен 0; последнее зависит от количества месяцев в году.

На самом деле я бы призываю вас использовать Joda Time вместо этого, если вы можете использовать это на Blackberry - это намного более приятный API.

3 голосов
/ 13 июля 2011

Месяцы в классе Java Calendar нумеруются от 0 до 11, а не от 1 до 12. Поэтому вычтите 1 из числа месяца, который вы хотите.

Отредактировано для добавления: класс Calendar имеет несколько статических переменных, включая двенадцать для месяцев года - Calendar.JANUARY (целое число 0), Calendar.FEBRUARY (целое число 1) и т. Д. Я бы посоветовал вы используете те, где это возможно, а не целые числа.

2 голосов
/ 13 июля 2011

Класс java.util.Calendar считает месяцы, начиная с 0, но дни, используя фактический день месяца. Это чрезвычайно часто задаваемый вопрос - он срабатывает почти у всех при первом программировании с использованием классов Java Date или Calendar.

...