java中计算出差天数



  最近项目中有出差申请信息,里面有根据出差开始时间和结束时间算出出差天数的要求。

 我的做法如下:

    Date startDate开始时间 Date endDate结束时间

  所需天数=(endDate.getTime()-startDate.getTime())/(1000*60*60*24)

  其中:间隔=Date1.getTime()-Date2.getTime();得出来的是毫秒数.
  除1000是秒,再除60是分,再除60是小时,再除24为天数

如果我选了同一天的不同时间段,上面的方法得出的所需天数为0.这种算法算出来的不是我想要的结果.我们的要求是:出差在当天的话, 在中午12点前算半天,中午12点以后算1天.针对这个要求我又对出差结束时间做了判断。如果得到的出差结束时间在中午12点前,就为出差天数加上0.5天;如果出差结束时间在中午12点以后就为出差天数加上1天即所需天数=所需天数+判断后的天数。如下例所示:

      gwjxTripstartday//出差开始时间gwjxTripendday//出差结束时间gwjxTripdays //出差所需天数

     //判断开始时间和结束时间是否为空

        if (gwjxTripstartday!=null && !"".equals(gwjxTripstartday)

         &&gwjxTripendday!=null && !"".equals(gwjxTripendday))

    {

               //得到出差申请所需的天数

              gwjxTripdays=((gwjxTripendday.getTime()-gwjxTripstartday

                        .getTime())/ (1000 * 60* 60*24));

                Calendar aCalendar = Calendar.getInstance();

                //判断出差结束时间是在上午还是下午

                aCalendar.setTime(gwjxTripendday);

                //得到出差结束时间

                int day1 =aCalendar.get(Calendar.HOUR_OF_DAY);

                //判断是在12点前还是12点后

                if(day1<=12)

                 {

                  //若在12点前默认为半天  

                  gwjxTripdays=gwjxTripdays+0.5;

                  }else

                  {

                   //若在12点后默认为1

                   gwjxTripdays=gwjxTripdays+1;

                  }

      }

以上是按我的想法做的,现在把它写出来,估计判断的也不是很全面,如果哪位高人有更好的方法可以提出来,让我也学习学习。

你可能感兴趣的:(java中计算出差天数)