1 public static void main(String[] args) throws ParseException {
2
3 SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" );
4 String beginStr1 = "2021/11/24 10:50:13"; // 开始时间1
5 String beginStr2 = "2022/04/11 10:50:15"; // 开始时间2,注意时间中的时分秒对getAlmostDayRangeWithoutDay方法的影响
6
7 Date begin=sdf.parse(beginStr1);
8 Date end=sdf.parse(beginStr2);
9
10 System.out.println(getAlmostDayRangeWithoutDay(begin, end));
11
12 System.out.println(getDayRange(begin,end));
13 }
14
15 /**
16 * 帮助方法:{0,日期1}与{1,日期2}相差的天数(不足一天舍去)
17 *
18 * @param beginDate 开始日期
19 * @param endDate 结束日期
20 * @return 两个日期间相差的天数(不足一天舍去)
21 */
22 public static int getAlmostDayRangeWithoutDay(Date beginDate, Date endDate) {
23 if (beginDate == null || endDate == null) {
24 return 0;
25 }
26 boolean isNegative = false;
27 if (beginDate.after(endDate)) {
28 Date temp = beginDate;
29 beginDate = endDate;
30 endDate = temp;
31 isNegative = true;
32 }
33
34 Calendar calenderBegin = Calendar.getInstance();
35 Calendar calenderEnd = Calendar.getInstance();
36
37 calenderBegin.setTime(beginDate);
38 calenderEnd.setTime(endDate);
39
40 calenderBegin.set(Calendar.MILLISECOND, 0);
41 calenderEnd.set(Calendar.MILLISECOND, 0);
42
43 if (!calenderBegin.before(calenderEnd) && !calenderBegin.after(calenderEnd)) {
44 return 0;
45 }
46
47 int dayRange = 0;
48 while (calenderBegin.before(calenderEnd)) { //日期+1,day_of_month效果一样
49 calenderBegin.add(Calendar.DAY_OF_MONTH, 1);
50 dayRange += 1;
51 }
52
53 if (calenderBegin.after(calenderEnd)) { //不足一天减去一天
54 dayRange -= 1;
55 }
56
57
58 if (isNegative) {
59 dayRange = dayRange * -1;
60 }
61
62 return dayRange;
63 }
64
65 /**
66 * 帮助方法:{0,日期1}与{1,日期2}相差的天数(忽略小时)
67 *
68 * @param beginDate1 开始日期
69 * @param endDate1 结束日期
70 * @return 两个日期间相差的天数(忽略小时)
71 */
72 public static int getDayRange(Date beginDate1, Date endDate1) {
73
74 SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd" );
75 Date beginDate =null;
76 Date endDate =null;
77 try {
78 beginDate = sdf.parse(sdf.format(beginDate1));
79 endDate = sdf.parse(sdf.format(endDate1));
80 } catch (ParseException e) {
81 e.printStackTrace();
82 }
83
84 if (beginDate == null || endDate == null) {
85 return 0;
86 }
87 boolean isNegative = false;
88
89 if (beginDate.after(endDate)) {
90 Date temp = beginDate;
91 beginDate = endDate;
92 endDate = temp;
93 isNegative = true;
94 }
95 Calendar calenderBegin = Calendar.getInstance();
96 Calendar calenderEnd = Calendar.getInstance();
97 calenderBegin.setTime(beginDate);
98 calenderEnd.setTime(endDate);
99
100 int dayRange = 0;
101 while (calenderBegin.getTime().before(calenderEnd.getTime())) {
102 calenderBegin.add(Calendar.DAY_OF_MONTH, 1);
103 dayRange += 1;
104 }
105
106 System.out.println(calenderBegin.getTime());
107 if (isNegative) {
108 dayRange = dayRange * -1;
109 }
110
111 return dayRange;
112 }
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 »
计算两日期相差的天数