Автоматическая коррекция Java календарного дня месяца? - PullRequest
0 голосов
/ 03 февраля 2011

Хочу узнать, есть ли самый простой способ исправить значения дня при его настройке. Я имею в виду:

int birthDay = 30;
int birthMonth = 1;
int birthYear = 1980;

Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, birthDay);
cal.set(Calendar.MONTH, birthMonth);
cal.set(Calendar.YEAR, birthYear);

Февраль не имеет дня 30. С другой стороны, у него особое состояние: 1980 год - это февраль, в котором 29 дней. Поэтому я должен получить исправленное значение как «1980-Февраль-29». Это должно занять максимальный день в этом месяце, если я превышаю диапазон месяца. Как я могу сделать это самым простым способом, и если я могу найти решение, которое не требует написания дополнительного кода вместо использования методов класса Calendar, это будет прекрасно.

РЕДАКТИРОВАТЬ: Я изменил cal.set (Calendar.MONTH, birthMonth-1); to cal.set (Calendar.MONTH, birthMonth); извините за это.

Ответы [ 3 ]

4 голосов
/ 03 февраля 2011
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, birthYear);
cal.set(Calendar.MONTH, birthMonth);
cal.set(Calendar.DAY_OF_MONTH, Math.min(birthDay, cal.getActualMaximum(Calendar.DAY_OF_MONTH)));
1 голос
/ 03 февраля 2011

Используйте calendar.getActualMaximum (Calendar.DAY_OF_MONTH), чтобы найти максимальный день месяца

0 голосов
/ 03 февраля 2011

Нет, на данный момент это единственный способ.

Конечно, вы можете проанализировать дату из строки, используя объект java.text.DateFormat (обычно SimpleDateFormat). Это наиболее близко к одной строке, которую вы можете получить, если ваш ввод String.

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