Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Получите количество дней в течение этого месяца:
Calendar cal = Calendar.getInstance();
cal.setTime(sampleDay.getTime());
int noOfLastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
Установите Календарь на прошлый день этого месяца:
Calendar cal = Calendar.getInstance();
cal.setTime(sampleDay.getTime());
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
Используйте calObject.getActualMaximum (calobject. DAY_OF_MONTH)
См. практическое руководство Java Real для большего количества информации об этом.
Я создал бы объект даты в течение первого дня месяца NEXT и затем просто вычел бы единственный день из объекта даты.
Похоже на установку календаря на первый день следующего месяца таким образом, Вам нужна еще одна строка, чтобы вычесть один день, добраться в последний день месяца, в котором находится sampleDay:
Calendar cal = Calendar.getInstance();
cal.setTime(sampleDay.getTime());
cal.roll(Calendar.MONTH, true);
cal.set(Calendar.DAY_OF_MONTH, 0);
cal.add(Calendar.DAY_OF_MONTH, -1);
В целом намного легче сделать такого рода вещь с помощью Времени Joda, например:
DateTime date = new DateTime(sampleDay.getTime());
return date.plusMonths(1).withDayOfMonth(0).minusDays(1).getMillis();