У меня есть этот метод, который возвращает мне Date(), измененную одним из его «полей» (DAY, MONTH, YEAR).Обнаружить неверную дату в Calendar.set()
public static Date getDateChanged(Date date, int field, int value) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(field, value);
return cal.getTime();
}
Однако cal.set() не может дать исключение, когда поле мы пытаемся установить не совместим с указанной даты. Таким образом, в данном случае:
Date date = new Date();
date = getDateChanged(date, Calendar.DAY_OF_MONTH, 29);
date = getDateChanged(date, Calendar.MONTH, 1); // feb
дата, в конце концов, 01/03/15, потому что Calendar.set() определяет, что февраль не может быть установлен с 29-й день, поэтому автоматически устанавливается дата на следующий возможный день (я думаю, что так работает рутина).
Это не так уж плохо, однако, в моем случае,
Я хочу, чтобы обнаружить, что дата, я пытаюсь построить невозможно, и затем начать декремента день, так что в этом случае то, что я» m пытается достигнуть 28/02/15, как я могу это сделать?
Пример:
29/02/15 ===> 28/02/15
я думаю, что он не хочет исключение – VedX
Он сказал: «Я хочу обнаружить, что дата, которую я пытаюсь построить, невозможна, а затем начнет декретировать день». Исключение броска - один из способов определить, что что-то невозможно. Также он может поймать его и сделать что-то другое на этом основании. – ap0calypt1c
теперь дата, если не исключение (здесь 29/2/15) добавляется как (01/03/15) на следующую дату, но здесь он хочет добавить 28/2/15. @polska, пожалуйста, поправьте меня, если я ошибаюсь – VedX