/**
* 得到某年某月某日是星期几
*计算公式:(year-1+(year-1)/4 -(year-1)/100 +(year-1)/400+n)%7
*公式说明:year为年份,n为该天是该年的第几天(包括该天)
*/
public int week(int year,int month,int day){
int week = 0;
Calendar cal = Calendar.getInstance();
cal.clear();
//cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month-1);// Calendar对象默认一月为0
cal.set(Calendar.DATE, day);
year = year-1;
week = (year + year / 4 - year / 100 + year / 400 + cal.get(Calendar.DAY_OF_YEAR)) % 7;
return week;
}
/**
* 得到某年某月有多少天
* @return
*/
public int day(int year,int month){
int day = 0;
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month-1);// Calendar对象默认一月为0
day = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
return day;
}
<table width="100%" border="0" cellspacing="1" cellpadding="0" class="cen_tab01">
<tr>
<th>星期日</th>
<th>星期一</th>
<th>星期二</th>
<th>星期三</th>
<th>星期四</th>
<th>星期五</th>
<th>星期六</th>
</tr>
<tr>
<%
DateUtil temp = new DateUtil();
int year=0;
int month=0;
String strYear = request.getParameter("year");
String strMonth = request.getParameter("month");
if(strYear==null){
year = Integer.parseInt(DateUtil.getDateStr("yyyy",new Date()));
}else{
year = Integer.parseInt(strYear);
}
if(strMonth==null){
month = Integer.parseInt(DateUtil.getDateStr("MM",new Date()));
}else{
year = Integer.parseInt(strMonth);
}
int day = temp.day(year, month);
int j=0;
int week = 0;
for (int i = 1; i <= day; i++) {
j=j+1;
if(i==1){
week = temp.week(year, month, i);
j = j+week;
}
%>
<%if(i==1){
for(int k=0;k<week;k++){
out.println("<td> </td>");
}
}
%>
<td align="center"><%=i %></td>
<%
if(j%7==0){
out.print("</tr><tr>");
}
}%>
</tr>
</table>