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