当前位置: 代码迷 >> J2SE >> 根据传入的年份和月份生成一个List<DateTimeVO>
  详细解决方案

根据传入的年份和月份生成一个List<DateTimeVO>

热度:232   发布时间:2016-04-24 02:28:07.0
求助:根据传入的年份和月份生成一个List<DateTimeVO>
这是 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;    }
  相关解决方案