Приведенный выше код неверен в лучшем случае и опасен в худшем.Существуют причины, по которым существуют классы Date
и Calendar
.Управление високосными годами является одним из них.
Приведенный выше код должен видеть продуктивность только в тех случаях, когда вы действительно понимаете, что делаете, и вам необходимо добиться производительности с помощью этих средств.Ваша лучшая ставка выглядит следующим образом:
public Date subtractYear() {
final Calendar c = new Calendar();
c.set(year, month, day); // set your class's "current" date
c.add(Calendar.YEAR, -1); // remove 1 year
return c.getTime(); // get the Date object back from the Calendar
}
В качестве дополнительного комментария, использование блоков try-catch
для обработки нормального выполнения программы, как правило, является плохим способом обработки вещей, которые вы ожидаете на обычной основе.Создание трассировки стека исключений является дорогостоящей операцией.