Subtracting days in a Calendar object [duplicate]
Possible Duplicate:
Anyone know a simple way using java calendar to subtract X days to a date?
I need to minus 365 days in a given date (givenDate)-
Calendar calendar = Calendar.getInstance();
calendar.setTime(givenDate);
calendar.add(Calendar.开发者_StackOverflow中文版DATE, -365);
Am I right?
Calendar.DAY_OF_YEAR
is the proper way to subtract days
You can also subtract a year (taking in to account leap years) by using
Calendar calendar = Calendar.getInstance();
calendar.setTime(givenDate);
calendar.add(Calendar.YEAR, -1);
That is the correct way to subtract days.
Note that 365 days does not always equal one year because of leap days. calendar.add(Calendar.YEAR, -1)
would subtract one year correctly.
You also may want to use Joda Time-library instead of java.util.Date
and java.util.Calendar
. Joda Time is a much nicer API for handling times and dates.
I don't think it'll make a different, but I would use Calendar.DAY_OF_YEAR as the field.
If you are trying to strictly subtract 365 days, then yeah, that'd do it. However, if you are trying years backward, that might not work due to leap years.
Check out Veyder-time. It is a simple and powerful alternativ to java.util.Calendar and has simple methods for adding and subtracting both days and years, among many other things.
精彩评论