JAVA 比較兩個日期相差的天數


package com.jd.jr.fclient.test;

 
import  org.junit.Test;
 
import  java.text.ParseException;
import  java.text.SimpleDateFormat;
import  java.util.Calendar;
import  java.util.Date;
 
/**
  * 日期測試類
  *
  * @author zhanghao10@jd.com
  * @since 2016/3/18 0018
  */
 
public  class  DateTest {
 
 
     /**
      *  使用Calendar類 輔助完成天數的差值
      *  在不涉及到跨年的情況,此種方法是沒問題的
      *  但是設計跨年的情況,此種方法回出問題的哦
      *
      * 如果時間為:2016-03-18 11:59:59 和 2016-03-19 00:00:01的話差值為 1
      *
      * @throws ParseException
      */
     @Test
     public  void  daysOfTwo_1()  throws  ParseException {
         SimpleDateFormat sdf= new  SimpleDateFormat( "yyyy-MM-dd" );
         //跨年的情況會出現問題哦
         //如果時間為:2016-03-18 11:59:59 和 2016-03-19 00:00:01的話差值為 1
         Date fDate=sdf.parse( "2015-12-31" );
         Date oDate=sdf.parse( "2016-01-01" );
         Calendar aCalendar = Calendar.getInstance();
         aCalendar.setTime(fDate);
         int  day1 = aCalendar.get(Calendar.DAY_OF_YEAR);
         aCalendar.setTime(oDate);
         int  day2 = aCalendar.get(Calendar.DAY_OF_YEAR);
         int  days=day2-day1;
         System.out.print(days);
     }
 
     /**
      * 通過毫秒值,手動計算日期間的相關的值
      *
      * 跨年不會出現問題
      * 使用此種方法的話需要注意
      * 如果時間為:2016-03-18 11:59:59 和 2016-03-19 00:00:01的話差值為 0
      *
      * @throws ParseException
      */
     @Test
     public  void  daysOfTwo_2()  throws  ParseException {
         SimpleDateFormat sdf= new  SimpleDateFormat( "yyyy-MM-dd" );
         //跨年不會出現問題
         //如果時間為:2016-03-18 11:59:59 和 2016-03-19 00:00:01的話差值為 0
         Date fDate=sdf.parse( "2015-12-31" );
         Date oDate=sdf.parse( "2016-01-01" );
         long  days=(oDate.getTime()-fDate.getTime())/( 1000 * 3600 * 24 );
         System.out.print(days);
     }
 
              
      /**
      * 計算兩個 localdatetime之間的天數差
      *
      * @throws ParseException
      */
     public  void  getDays  throws  ParseException {
        

                   LocalDateTime now = LocalDateTime.now();
                   System.out.println("計算兩個時間的差:");
                   LocalDateTime end = LocalDateTime.now();
                   Duration duration = Duration.between(now,end);
                   long days = duration.toDays(); //相差的天數
                   long hours = duration.toHours();//相差的小時數
                   long minutes = duration.toMinutes();//相差的分鍾數
                   long millis = duration.toMillis();//相差毫秒數
                   long nanos = duration.toNanos();//相差的納秒數
                   System.out.println(now);
                   System.out.println(end);

     }
             
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM