我尝试根据工作日将日期添加一个月。例如,日期是 9 月的第 3 个星期一。添加后我想要 3. 十月的星期一。我试图将一个月添加到下一个日期
Mon Sep 17 17:30:00 MESZ 2012
使用此代码:
Calendar date = Calendar.getInstance();
date.setTimeInMillis(date_in_mil);
date.add(Calendar.DAY_OF_WEEK_IN_MONTH, 3);
但我得到了
Mon Oct 08 17:30:00 MESZ 2012
这是十月的第二个星期一,而不是第三个星期一。有人知道这是如何工作的吗?
编辑 这是我在下面的答案中使用的解决方案:
int prevDayOfWeek = date.get(Calendar.DAY_OF_WEEK);
date.add(Calendar.MONTH, 1);
date.set(Calendar.DAY_OF_WEEK, prevDayOfWeek);
date.set(Calendar.DAY_OF_WEEK_IN_MONTH, week);
wereby week 是一个月中的周数。例如,1 表示第一个,2 表示第二个,依此类推。但是周也可以倒数,例如 -1 表示一个月的最后一周。