比较两个日期相差的天数和月数

 在实际的应用中,我们经常会比较两个日期相差的天数,下面我们通过java方法判断两个日期所差的额天数。    

      具体内容,请看下面的代码:

     

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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 [email protected]
  * @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);
     }
 
 
 
 
}

 

  

  

  大家可以根据实际的需要选择对应的计算方法即可。

     下面附上JS计算两个日期的相差天数的值计算方法:

     

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var date1= new  Date();   //开始时间
alert( "aa" );
var date2= new  Date();     //结束时间
var date3=date2.getTime()-date1.getTime()   //时间差的毫秒数
  
 
//计算出相差天数
var days=Math.floor(date3/( 24 * 3600 * 1000 ))
  
//计算出小时数
 
var leave1=date3%( 24 * 3600 * 1000 )     //计算天数后剩余的毫秒数
var hours=Math.floor(leave1/( 3600 * 1000 ))
//计算相差分钟数
var leave2=leave1%( 3600 * 1000 )         //计算小时数后剩余的毫秒数
var minutes=Math.floor(leave2/( 60 * 1000 ))
  
 
//计算相差秒数
var leave3=leave2%( 60 * 1000 )       //计算分钟数后剩余的毫秒数
var seconds=Math.round(leave3/ 1000 )
  
 
alert( " 相差 " +days+ "天 " +hours+ "小时 " +minutes+ " 分钟" +seconds+ " 秒" )

 比较月数:

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                Date auditTime = domainModel.getAuditTime();
                String date1 = sdf.format(domainModel.getAuditTime());
                String date2 = DateUtil.getNowDate();
                Calendar bef = Calendar.getInstance();
                Calendar aft = Calendar.getInstance();
                try {
                    bef.setTime(sdf.parse(date1));
                    aft.setTime(sdf.parse(date2));
                    int sum = (aft.get(Calendar.MONTH) - bef.get(Calendar.MONTH)) + (aft.get(Calendar.YEAR) - bef.get(Calendar.YEAR)) * 12;
                    if (sum > 12) {
                        domainModel.setState(0);
                        if (MALL_BASE_DAO.update(domainModel)) {
                            response.setStatus(HttpServletResponse.SC_BAD_GATEWAY);
                            response.setHeader("Location", domainUrl);
                            return;
                        }
                    }
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

转载自:https://www.cnblogs.com/xiohao/p/5294412.html

猜你喜欢

转载自blog.csdn.net/kingstormqueen/article/details/79928078