最近做一个控件画图项目,需要提取和处理选定起止年月日时间段内的数据,那首先一步当然是要能编程实现访问选定时间段内的每一年的每个月的每一天,下面是我写的源码,说明一点,每个月我指定31天的,需要用的改一下闰年平年,还有月份的判断。
选定起始时间和结束时间,打印选定时间段类的每一年,每一月,每一天,
String in_begin_date=request.getParameter("begin_date"); //起始日期 String in_end_date=request.getParameter("end_date"); //终止日期 //----------------------日期处理开始---------------------------- String str_StartYYYY=in_begin_date.substring(0, 4); //获取起始年 String str_EndYYYY=in_end_date.substring(0, 4); //获取起始年 String str_StartMM=in_begin_date.substring(5,7);//获取月 String str_EndMM=in_end_date.substring(5,7);//获取月 String str_StartDD=in_begin_date.substring(8, 10);//获取日 String str_EndDD=in_end_date.substring(8, 10);//获取日 int Int_StartYYYY=Integer.parseInt(str_StartYYYY); int Int_EndYYYY=Integer.parseInt(str_EndYYYY); int Int_StartMM=Integer.parseInt(str_StartMM); int Int_EndMM=Integer.parseInt(str_EndMM); int Int_StartDD=Integer.parseInt(str_StartDD); int Int_EndDD=Integer.parseInt(str_EndDD); int Int_NowYYYY=Integer.parseInt(str_StartYYYY);//当前年,初始值设为起始年 int Int_NowMM=Integer.parseInt(str_StartMM);//当前月,初始值设为起始月 int Int_NowDD=Integer.parseInt(str_StartDD);//当前日,初始值设为起始日 System.out.println(Int_StartYYYY); System.out.println(Int_EndYYYY); System.out.println(Int_StartMM); System.out.println(Int_EndMM); System.out.println(Int_StartDD); System.out.println(Int_EndDD); if(Int_EndYYYY>Int_StartYYYY)//结束年份大于起始年份 { do { if(Int_NowYYYY<Int_EndYYYY)//现在年份小于结束年份,每年取12个月,每个月取31天 { do { do { System.out.println(Int_NowDD);//test Int_NowDD=Int_NowDD+1; } while(Int_NowDD<=31);//每个月以31天算 Int_NowDD=1; System.out.println(Int_NowMM);//test Int_NowMM=Int_NowMM+1; } while(Int_NowMM<=12); Int_NowMM=1; } else //现在年份等于结束年份,取到结束月,再次判断是否到结束月份,若到就取到结束日,未到则每个月取31天 { do { if(Int_NowMM<Int_EndMM) { do { System.out.println(Int_NowDD);//test Int_NowDD=Int_NowDD+1; } while(Int_NowDD<=31);//每个月以31天算,方便取查询结果集 } else{//结束月 do { System.out.println(Int_NowDD);//test Int_NowDD=Int_NowDD+1; } while(Int_NowDD<=Int_EndDD);//结束日 } Int_NowDD=1; System.out.println(Int_NowMM);//test Int_NowMM=Int_NowMM+1; } while(Int_NowMM<=Int_EndMM); Int_NowMM=1; } System.out.println(Int_NowYYYY);//test Int_NowYYYY=Int_NowYYYY+1; } while(Int_EndYYYY>=Int_NowYYYY);//现在年份与结束年份比较 } else if(Int_EndYYYY==Int_StartYYYY)//起始年份等于结束年份 { if(Int_StartMM<Int_EndMM)//起始月份小于结束月份 { do { if(Int_NowMM<Int_EndMM)//结束月之前的每个月以31天算 { do { System.out.println(Int_NowDD);//test Int_NowDD=Int_NowDD+1; } while(Int_NowDD<=31);//每个月以31天算,方便取查询结果集 } else{//结束月份,直到结束日 do { System.out.println(Int_NowDD);//test Int_NowDD=Int_NowDD+1; } while(Int_NowDD<=Int_EndDD);//结束日 } Int_NowDD=1; //每个月完了以后,下个月从一号开始 System.out.println(Int_NowMM);//test Int_NowMM=Int_NowMM+1;//下一个月 } while(Int_EndMM>=Int_NowMM); } else if(Int_StartMM==Int_EndMM)//起始月份等于结束月份 { if(Int_EndDD>Int_StartDD)//起始日小于结束日 { //从起始日到结束日,循环处理 do { System.out.println(Int_NowDD);//test Int_NowDD=Int_NowDD+1; } while(Int_EndDD>=Int_NowDD); } else if(Int_StartDD==Int_EndDD) { } else { System.out.println("提示:输入的起始日必须小于输入的结束日!"); } } else//起始月份大于结束月份 { System.out.println("提示:输入的起始月份必须小于输入的结束月份!"); } } else//起始年份大于结束年份 { //提示起始年份必须小于结束年份 System.out.println("提示:输入的起始年份必须小于输入的结束年份!"); } //-------------------日期处理结束---------------------------