以下是我用来计算一个月中的星期数的代码。但是实际上我需要几个星期,每个星期的开始日期为MONDAY,结束日期为SUNDAY。例如,2012年1月将有5个星期。但是按照上述标准,将需要6周的时间。
2012年1月
第一周-周日01
第二周-2周一至8周日
第三周-周一9点至周日15点
第四周-周一16日至周日22
第五周-周一23日至周日29
第六周-星期一30至星期二31。
以下代码仅提供了5周的时间。
public class Test {
public static void main(String[] args)
{
Calendar calendar = Calendar.getInstance();
int year = 2012;
int month = Calendar.JANUARY;
int date = 1;
calendar.set(year, month, date);
int numOfDaysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
int numOfWeeksInMonth = calendar.getActualMaximum(Calendar.WEEK_OF_MONTH);
System.out.println("Number of Days In Month: " + numOfDaysInMonth);
System.out.println("Number of Weeks In Month: " + numOfWeeksInMonth);
}
}
上面代码的输出是
每月的天数:31
月的周数:5
但是我需要获取“每月的周数:”为6
*另外,我正在尝试以ddMMYYYY格式获取每周的开始日期和结束日期。
我还在努力。
谁能帮我解决这个问题?
最佳答案
试试这个功能
public static void main(String[] args) {
System.out.println(getNumberOfWeeks(2012, Calendar.JANUARY));
}
static int getNumberOfWeeks(int year, int month) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, 1);
int numOfWeeksInMonth = 1;
while (c.get(Calendar.MONTH) == month) {
c.add(Calendar.DAY_OF_MONTH, 1);
if (c.get(Calendar.DAY_OF_WEEK) == Calendar.MONDAY) {
numOfWeeksInMonth++;
}
}
return numOfWeeksInMonth;
}