Java計算兩個日期相差

jopen 10年前發布 | 13K 次閱讀 日期 Java開發

 import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/*

  • @ClassName: DateMargin *
  • @Description: 計算兩個日期相差天數
  • @author PineTree
  • @date 2014年12月20日 下午2:20:17
  • @version */ public class DateMargin {

    public static void main(String[] args) {

     try{
         /**
          * GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second)
          * year - 用來在日歷中設置 YEAR 日歷字段的值。
          * month - 用來在日歷中設置 MONTH 日歷字段的值。Month 值是基于 0 的,例如,0 表示 1 月。
          * dayOfMonth - 用來在日歷中設置 DAY_OF_MONTH 日歷字段的值。
          * hourOfDay - 用來在日歷中設置 HOUR_OF_DAY 日歷字段的值。
          * minute - 用來在日歷中設置 MINUTE 日歷字段的值。
          * second - 用來在日歷中設置 SECOND 日歷字段的值。
          */
         Date startDate = new GregorianCalendar(2009, 02, 15, 13, 13 ,0).getTime();
         Date endDate = new GregorianCalendar().getTime();
         System.out.println(startDate +"\t" + endDate);
         //System.out.println("使用 getIntervalDays 相差天數 = " + getIntervalDays(startDate, endDate));
         //System.out.println("使用 daysOfTwo 相差天數 = " + daysOfTwo(startDate, endDate));
         System.out.println("使用daysBetween 相差天數 = " + daysBetween(startDate, endDate));
         //System.out.println("使用daysMargin 相差天數 = " + daysMargin(startDate.toLocaleString(), endDate.toLocaleString()));
     }catch(Exception e){
         e.printStackTrace();
     }    
    

    }

    /**

    • 計算兩個日期相差的天數 *
    • 此版本的方法要比較的嚴格意義上的天,舉個例子,計算今天與昨天比較相差幾天,
    • 我們或許都認為是1,但我們要輸入兩個日期類型的參數,這個日期中不僅包含天,
    • 還有小時,分等,版本1會根據您輸入的小時與分不同,返回不同的結果的,
    • 比如你輸入的參數今天中午與昨天晚上的兩個時間,它就會告訴你相差0天。 *
    • @param startDate 起始日期
    • @param endDate 結束日期
    • @return int 如果是-1說明起始日期或者結束日期為null */ public static int getIntervalDays(Date startDate, Date endDate){ if(null == startDate || null == endDate){

       return -1;
      

      } System.out.println("endDate = " + endDate.getTime() + "\tstartDate = " + startDate.getTime()); long intervalMilli = endDate.getTime() - startDate.getTime(); System.out.println("intervalMilli = " + intervalMilli); return (int) (intervalMilli / (24 60 60 * 1000)); }

      /**

    • 計算兩個日期相差的天數 *
    • @param startDate 起始日期
    • @param endDate 結束日期
    • @return int 如果是-1說明起始日期或者結束日期為null */ public static int daysOfTwo(Date startDate, Date endDate){ if(null == startDate || null == endDate){

       return -1;
      

      } Calendar calendar = Calendar.getInstance(); calendar.setTime(startDate); int startDay = calendar.get(Calendar.DAY_OF_YEAR); System.out.println("startDay = " + startDay); calendar.setTime(endDate); int endDay = calendar.get(Calendar.DAY_OF_YEAR); System.out.println("endDay = " + endDay); return endDay - startDay; }

      /**

    • 計算兩個日期相差天數,先把日期轉成yyyy-MM-dd格式,再計算。 *
    • @param startDate 起始日期
    • @param endDate 結束日期
    • @return int 如果是-1說明起始日期或者結束日期為null
    • @throws ParseException */ public static int daysBetween(Date startDate, Date endDate) throws ParseException{ System.out.println(startDate.toLocaleString() + "\t" + endDate.toLocaleString()); if(null == startDate || null == endDate){

       return -1;
      

      } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); startDate = sdf.parse(sdf.format(startDate)); endDate = sdf.parse(sdf.format(endDate)); Calendar calendar = Calendar.getInstance(); calendar.setTime(startDate); long startDay = calendar.getTimeInMillis(); calendar.setTime(endDate); long endDay = calendar.getTimeInMillis();

      return (int) ((endDay - startDay) / (24 60 60 *1000)); }

      /**

    • String類型日期計算相差天數 *
    • @param startDate 起始日期
    • @param endDate 結束日期
    • @return int 如果是-1說明起始日期或者結束日期為null
    • @throws ParseException */ public static int daysMargin(String startDate, String endDate) throws ParseException{ if(null == startDate || null == endDate){
       return -1;
      
      } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date newStartDate = sdf.parse(startDate); Date newEndDate = sdf.parse(endDate); Calendar calendar = Calendar.getInstance(); calendar.setTime(newStartDate); long startDay = calendar.getTimeInMillis(); calendar.setTime(newEndDate); long endDay = calendar.getTimeInMillis(); return (int) ((endDay - startDay) / (24 60 60 *1000)); } }</pre>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!