这是 DateTimeVO 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=10Sun 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则为“”。
不知道要以这种形式生成应该怎样做?谢谢大家。
private String monday;
private String tuesday;
private String wednesday;
private String thursday;
private String friday;
private String saturday;
按着参数当前年份月份计算出day与星期的对应,依次添加进List。
例:参数 year=2011,month=10Sun 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则为“”。
不知道要以这种形式生成应该怎样做?谢谢大家。
解决方案 »
- 求一个正则表达式
- 17号毕业答辩!!!希望能顺利......散分!!!!!!!!!!!!!!!!
- 朋友们,怎么让textarea显示其他类的值,我写的老报空指针错误。谢拉
- =====================求一正则表达式======================
- 小弟很迷茫,, 请各位前辈指教一下
- ArrayList能放的下5000个元素吗
- 关于URL编码
- 高手呢???问了这么久,还没人答出...可惜!!重赏!!请教..james邮件服务器的一些小问题!!
- 有关调用WORD的问题
- FORTE如何加载已有的JAR的API?
- 关于ognl表达式传参问题
- 一道第三届itatjava复赛试题
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();
}这是我找的代码,可以做到日期号对应到相应的星期,只要将输出改成字符串的处理和list的添加,应该就可以实现吧。
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;
}
测试没问题 楼主看自己情况做一些小调整估计是没什么问题的 DateTimeV是完全如楼主所给出的
list.add(new DateTimeV(getString(data[i][0]), getString(data[i][1]), getString(data[i][2]), getString(data[i][3]), getString(data[i][4]), getString(data[i][5]), getString(data[i][6])));这句忘记改过来了
list.add(new DateTimeV(getString(data[i][0]), getString(data[i][1]), getString(data[i][2]), getString(data[i][3]), getString(data[i][4]), getString(data[i][5]), getString(data[i][6])));
这句忘记改过来了