用java写的一个日历

/**
	 * 得到某年某月某日是星期几
	 *计算公式:(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>&nbsp;</td>");
						}
					}
					%>
					<td align="center"><%=i %></td>
					
				<%
					if(j%7==0){
						out.print("</tr><tr>");
					}
				}%>
				</tr>
			
</table>

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值