package cn.newgxu.bbs.domain.calendar; import java.io.Serializable; import java.util.ArrayList; import java.util.Calendar; import java.util.List; /** * @项目名称 :meeting * @文件名称 :MonthUnit.java * @所在包 :cn.newgxu.bbs.domain.calendar * @功能描述 : * 年月日中的月基本单位。具有dayList * * @创建者 :集成显卡 1053214511@qq.com * @创建日期 :2011-9-15 * @修改记录 : */ @SuppressWarnings("serial") public class MonthUnit implements Serializable { private int year; private int month; private int space_before; private int space_after; private List<Day> dayList=null; /** * @构造方法:默认是1月 * @类名:MonthUnit.java */ public MonthUnit(){ this(2011,1); } public MonthUnit(int year,int month){ this.year=year; if(month<13&&month>0) this.month=month; initDays(); } /** * 实例这个月的天表<br /> * 先计数出一共有多少天.这里是以35为全部,减去1号前的空白天数,还有月尾后的空白天数。<br /> * 使用Calendar.get(Calendar.DAY_OF_WEEK);得到指定号的空白时间。<br /> * * @date :2011-9-15 */ private void initDays(){ Calendar c=Calendar.getInstance(); c.set(this.year,this.month-1, 1); space_before=c.get(Calendar.DAY_OF_WEEK)-1; int start=c.get(Calendar.DAY_OF_YEAR); c.roll(Calendar.MONTH, true);//月份+1 int end=c.get(Calendar.DAY_OF_YEAR); space_after=8-c.get(Calendar.DAY_OF_WEEK); //当end为1时,就说明是另外一年了,就要回加上年的天数 if(end==1){ //如果刚好又是星期六,要处理一下 if(space_after==1) space_after=0; c.add(Calendar.DAY_OF_MONTH, -1); end=c.get(Calendar.DAY_OF_YEAR)+1; } //得到天数 int size=end-start; dayList=new ArrayList<Day>(); for(int i=0;i<size;i++){ dayList.add(new Day(this.year,this.month,i+1)); } } /** * 获取这个月的信息 * @return * @date :2011-9-15 */ public String getMothInfo(){ return this.year+"年"+this.month+"月"; } /** * 获取天数 * @return * @date :2011-9-15 */ public int getDayCount(){ return this.dayList.size(); } /** * 获取这个月份的以Table形式显示的html代码 * @return * @date :2011-9-15 */ public String getTableInfo(){ StringBuffer sb=new StringBuffer("<tr>"); if(this.space_before>0) sb.append("<td colspan='"+this.space_before+"' class='space'> </td>"); for(int i=0;i<this.dayList.size();i++){ String dd=this.dayList.get(i).isToday()?" class='current_day'":""; if(i>0&&(i+space_before)%7==0){ sb.append("</tr><tr><td"+dd+" day='"+this.dayList.get(i).getDay()+"'>"+this.dayList.get(i).getDay()+"<br />"+this.dayList.get(i).getHolidayInfo()+"</td>"); }else{ sb.append("<td"+dd+" day='"+this.dayList.get(i).getDay()+"'>"+this.dayList.get(i).getDay()+"<br />"+this.dayList.get(i).getHolidayInfo()+"</td>"); } } if(this.space_after==0) sb.append("</tr>"); else sb.append("<td colspan='"+this.space_after+"' class='space'> </td></tr>"); return sb.toString(); } public int getMonth() { return month; } public void setMonth(int month) { this.month = month; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public int getSpace_before() { return space_before; } public void setSpace_before(int spaceBefore) { space_before = spaceBefore; } public int getSpace_after() { return space_after; } public void setSpace_after(int spaceAfter) { space_after = spaceAfter; } public List<Day> getDayList() { return dayList; } public void setDayList(List<Day> dayList) { this.dayList = dayList; } }