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;

                  }

      }

以上是按我的想法做的,現在把它寫出來,估計判斷的也不是很全面,如果哪位高人有更好的方法可以提出來,讓我也學習學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章