Вычитание дней в объекте "Календарь"
Возможный дубликат:
Кто-нибудь знает простой способ использования java-календаря, чтобы вычесть X дней на дату?
Мне нужно минус 365 дней в заданную дату (givenDate) -
Calendar calendar = Calendar.getInstance();
calendar.setTime(givenDate);
calendar.add(Calendar.DATE, -365);
Я прав?
Ответы
Ответ 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 и имеет простые методы для добавления и вычитания обоих дней и лет, среди многих других.