Java日期时间差以及获取几天后或几天前

 1 /**
 2      * @param date
 3      * @param day 想要获取的日期与传入日期的差值 比如想要获取传入日期前四天的日期 day=-4即可
 4      * @return
 5      */
 6     public static Date getSomeDay(Date date, int day){
 7         Calendar calendar = Calendar.getInstance();
 8         calendar.setTime(date);
 9         calendar.add(Calendar.DATE, day);
10         return calendar.getTime();
11     }
12     
13     /**
14      * 日期差天数、小时、分钟、秒数组
15      * @param startDate
16      * @param endDate
17      * @return
18      */
19     public static long[] getDisTime(Date startDate, Date endDate){
20         long timesDis = Math.abs(startDate.getTime() - endDate.getTime());
21         long day = timesDis / (1000 * 60 * 60 * 24);
22         long hour = timesDis / (1000 * 60 * 60) - day * 24;
23         long min = timesDis / (1000 * 60) - day * 24 * 60 - hour * 60;
24         long sec = timesDis / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60;
25         return new long[]{day, hour, min, sec};
26     }
27     
28     /**
29      * 日期差天数
30      * @param startDate
31      * @param endDate
32      * @return
33      */
34     public static long getDisDay(Date startDate, Date endDate){
35         long[] dis = getDisTime(startDate, endDate);
36         long day = dis[0];
37         if (dis[1] > 0 || dis[2] > 0 || dis[3] > 0) {
38             day += 1;
39         }
40         return day;
41     }
42     
43     /**
44      * 日期差文字描述
45      * @param startDate
46      * @param endDate
47      * @return
48      */
49     public static String getDisTimeStr(Date startDate, Date endDate){
50         long[] dis = getDisTime(startDate, endDate);
51         return new StringBuilder().append(dis[0]).append("天").append(dis[1]).append("小时").append(dis[2]).append("分钟")
52                 .append(dis[3]).append("秒").toString();
53     }

 

posted @ 2017-05-18 16:23  jackkke  阅读(14778)  评论(0编辑  收藏  举报