开发者

Subtracting days in a Calendar object [duplicate]

This question already has answers here: Closed 10 years ago.

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜