Учитывая Объект Даты, как я определяю в последний день его месяца?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

6
задан Allain Lalonde 16 September 2008 в 13:46
поделиться

4 ответа

Получите количество дней в течение этого месяца:


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));
17
ответ дан 8 December 2019 в 03:29
поделиться

Используйте calObject.getActualMaximum (calobject. DAY_OF_MONTH)

См. практическое руководство Java Real для большего количества информации об этом.

2
ответ дан 8 December 2019 в 03:29
поделиться

Я создал бы объект даты в течение первого дня месяца NEXT и затем просто вычел бы единственный день из объекта даты.

3
ответ дан 8 December 2019 в 03:29
поделиться

Похоже на установку календаря на первый день следующего месяца таким образом, Вам нужна еще одна строка, чтобы вычесть один день, добраться в последний день месяца, в котором находится 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();
2
ответ дан 8 December 2019 в 03:29
поделиться
Другие вопросы по тегам:

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