这是 DateTimeVO
- Java code
private String sunday; private String monday; private String tuesday; private String wednesday; private String thursday; private String friday; private String saturday;
按着参数当前年份月份计算出day与星期的对应,依次添加进List。
例:参数 year=2011,month=10
Sun Mon Tue Wed Tus Fri Sat
1 2 3 4 5 DateTimeVO 1
6 7 8 9 10 11 12 DateTimeVO 2
13 14 15 16 17 18 19 DateTimeVO 3
20 21 22 23 24 25 26 DateTimeVO 4
27 28 29 30 DateTimeVO 5
那么这个List<DateTimeVO> 有5条数据,如果当前星期不含day则为“”。
不知道要以这种形式生成应该怎样做?谢谢大家。
------解决方案--------------------
- Java code
Calendar c = Calendar.getInstance();c.set(Calendar.Date, 1);//获得1号是星期几int start = c.get(Calendar.DAY_OF_WEEK);//获得当前月的最大日期数int maxDay = c.getActualMaximum(Calendar.DATE);System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");for(int i = 1; i < start; i++){ System.out.print("\t");}for(int i = 1; i <= maxDay; i++){ System.out.print("" + i); System.out.print("\t"); if(i < 10){ System.out.print(""); } if((start + i - 1)%7 == 0){ System.out.println(); } System.out.println();}
------解决方案--------------------
看楼主是做android的吧 所以很多时候不能用jdk里面的方法 因为不知道android里面的jdk有没有那个类或者其中的方法 所以最好自己写了
- Java code
public int getWeekDay(int year,int month){ int days=1;//这里以windows操作系统为例 也就是:日一二三四五六 如果要换其他的可以在这个方法里面改 for(int i=1900;i<year;i++){ if(isLeapYear(i)){ days+=366; } else{ days+=365; } } for (int i = 1; i < month; i++) { days+=getMonthDay(year, i); } return days%7; } public boolean isLeapYear(int year){ return ((year%4==0&&year%100!=0)||year%400==0); } public int getMonthDay(int year,int month){ //31:1 3 5 7 8 10 12 30:4 6 9 11 28/29:2 if(month==2){ if(isLeapYear(year)){ return 29; } else{ return 28; } } else if(month<13){ if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){ return 31; } else{ return 30; } } return 0; } public int[][] getMonthData(int year,int month){ int weekDay=getWeekDay(year, month);//获取本月第一天是星期几 int ed=getMonthDay(year, month)-(7-weekDay); int length=1; int point=ed%7; if(point>0){ length+=ed/7+1; } else{ length+=ed/7; } int[][] data=new int[length][7]; int count=0; int week=0; for (int i = 1; i <= getMonthDay(year, month); i++) { if(count==0){ if(i==1){ week+=weekDay; } data[count][week]=i; } else{ data[count][week]=i; } week++; if((weekDay+i)%7==0){ count++; } if(week==7){ week=0; } } return data; } public String getString(int num){ return num==0?"":num+""; } public ArrayList<DateTimeV> getMonth(int year,int month){ int[][] data=getMonthData(year, month); ArrayList<DateTimeV> list=new ArrayList<DateTimeV>(); for (int i = 0; i < data.length; i++) { list.add(new DateTimeV(getString(data[i][0]), getString(data[i][0]), getString(data[i][0]), getString(data[i][0]), getString(data[i][0]), getString(data[i][0]), getString(data[i][0]))); } return list; }