Ответ 1

Calendar.DAY_OF_YEAR - это правильный способ вычитать дни

Вы также можете вычесть год (принимая во внимание високосные годы), используя

Calendar calendar = Calendar.getInstance();
calendar.setTime(givenDate);
calendar.add(Calendar.YEAR, -1);

Ответ 2

Это правильный способ вычитать дни.

Обратите внимание, что 365 дней не всегда равны одному году из-за високосных дней. calendar.add(Calendar.YEAR, -1) правильно вычитал бы один год.

Вы также можете использовать Joda Time -library вместо java.util.Date и java.util.Calendar. Joda Time - гораздо более удобный API для обработки времени и дат.

Ответ 3

Я не думаю, что это изменится, но я бы использовал Calendar.DAY_OF_YEAR как поле.

Ответ 4

Если вы пытаетесь строго вычесть 365 дней, то да, что бы это сделать. Однако, если вы пытаетесь сделать лет назад, это может не сработать из-за високосных годов.

Ответ 5

Отметьте Veyder-time. Это простой и мощный альтернатива java.util.Calendar и имеет простые методы для добавления и вычитания обоих дней и лет, среди многих других.