选定起始时间和结束时间,打印选定时间段类的每一年,每一月,每一天(我自己写的,转载注明版权哦)

最近做一个控件画图项目,需要提取和处理选定起止年月日时间段内的数据,那首先一步当然是要能编程实现访问选定时间段内的每一年的每个月的每一天,下面是我写的源码,说明一点,每个月我指定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("提示:输入的起始年份必须小于输入的结束年份!");
          }

//-------------------日期处理结束---------------------------
时间: 2024-11-06 11:35:43

选定起始时间和结束时间,打印选定时间段类的每一年,每一月,每一天(我自己写的,转载注明版权哦)的相关文章

ORACLE取周、月、季、年的開始时间和结束时间

 1           取周的開始时间和结束时间 取周的開始时间.以星期一为開始. SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:SS'),'D') + 1 ASA FROM DUAL; A ----------- 2013/11/25 取周的结束时间.以星期日为结束 SQL>SELECT TRUNC(TO_DATE('2013-11-25 10:31:11','YYYY-MM-DD HH24:MI:

js 开始时间,当前时间,结束时间的比较

//开始时间不能小于当前时间 function startTimeIsBigThanTotay(startTime){ var startdate = new Date((startTime).replace(/-/g,"/")); var date = new Date(); if(startdate < date) { return false; } else { return true; } } //结束时间不能小于当前时间 function endThanTotay(en

用sql对含有时间段字段(起始时间、结束时间)的记录做并集处理

来自于一个基友的问题: 他的博客同问题链接    sql时间段取并集.合并 https://blog.csdn.net/Seandba/article/details/105152412 问题:计算通道的总开放时长,只要有任意一个终端开放通道就算开放,难点在于各种终端开放时间重叠包含 问题测试数据 --问题一.测试数据--计算总开放时长(小时) TRUNCATE TABLE xcp; insert into xcp values('1','A1',to_date('20200317 01:00:

js 開始时间,当前时间,结束时间的比較

//開始时间不能小于当前时间 function startTimeIsBigThanTotay(startTime){ var startdate = new Date((startTime).replace(/-/g,"/")); var date = new Date(); if(startdate < date) { return false; } else { return true; } } //结束时间不能小于当前时间 function endThanTotay(en

设置两个WdatePicker的开始时间小于结束时间,结束时间大于开始时间

contract_start_date_id为开始时间ID contract_end_date_id为结束时间ID $("#contract_start_date_id").bind("click focus", function () { var endtimeTf = $dp.$('contract_end_date_id'); WdatePicker({ //skin: dateSkin, maxDate: '#F{$dp.$D(\'contract_end_

C#获取本周、上周、本月、上月、本季度、上季度、本年、上一年起始时间和结束时间

[参考] http://blog.csdn.net/livening/article/details/6049341 http://zhidao.baidu.com/question/378600365.html http://www.cnblogs.com/roy117/archive/2008/03/25/1121584.html 楼上几层的代码都太多了,不用那么复杂. 先跟你说一下原理: 1.国际上的WeekDay是从周日到周六的顺序 2.再说C#的DayOfWeek枚举值是依次从0到6,

拆线图按年、按月,按天统计,前端传时间只要起始时间与结束时间

工具类 package test.common.utils; import test.EventInfoCountVo; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; public class StatisticalUtil {

elementui 中 日期时间插件 结束时间大于开始时间

界面代码: <el-col :span="8"> <el-form-item label="开始日期" class="form-row-space"> <el-date-picker :picker-options="pickerOptionsStart" v-model="editDeviceGroup.start_date" type="date" pl

选择时间大于当前时间,结束时间大于现在时间

$(".time-pick").datetimepicker({ format: 'yyyy-mm-dd ', language: 'ch', minView: "month", singleDatePicker: true, autoclose: true, showMeridian:true, timePicker:true}).on('changeDate',function(ev){ var startDate=$('#start_date').val();