Suppose the following code is executed on the 22nd of August 2009 (a Saturday)
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
c.get(Calendar.DAY_OF_MONTH) will return 23. I'm interested in the conditions is would return 14 (last Sunday, rather than the next Sunday).
Are there any rules associated with the direction Calendar will roll the DAY_OF_MONTH/YEAR when DAY_OF_WEEK is set? If so what are they?
解决方案
When setting or getting the
WEEK_OF_MONTH or WEEK_OF_YEAR fields,
Calendar must determine the first week
of the month or year as a reference
point. The first week of a month or
year is defined as the earliest seven
day period beginning on
getFirstDayOfWeek() and containing at
least getMinimalDaysInFirstWeek() days
of that month or year. Weeks numbered
..., -1, 0 precede the first week;
weeks numbered 2, 3,... follow it.
Note that the normalized numbering
returned by get() may be different.
For example, a specific Calendar
subclass may designate the week before
week 1 of a year as week n of the
previous year.