|
@@ -0,0 +1,232 @@
|
|
|
+package com.charging.chargingparking;
|
|
|
+
|
|
|
+import cn.hutool.core.date.DateUnit;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+
|
|
|
+public class MainTestAll {
|
|
|
+ public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
|
|
|
+ if (nowTime.getTime() == startTime.getTime()
|
|
|
+ || nowTime.getTime() == endTime.getTime()) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ Calendar date = Calendar.getInstance();
|
|
|
+ date.setTime(nowTime);
|
|
|
+ Calendar begin = Calendar.getInstance();
|
|
|
+ begin.setTime(startTime);
|
|
|
+ Calendar end = Calendar.getInstance();
|
|
|
+ end.setTime(endTime);
|
|
|
+ if (date.after(begin) && date.before(end)) {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public static int dealDff(String temStartDate01,String temStartDate02,String temStartDate1,String temStartDate2){
|
|
|
+ int ret =0;
|
|
|
+ Date dateStart1= DateUtil.parse(temStartDate01);
|
|
|
+ Date dateEnd1= DateUtil.parse(temStartDate02);
|
|
|
+ Date dateStart2= DateUtil.parse(temStartDate1);
|
|
|
+ Date dateEnd2= DateUtil.parse(temStartDate2);
|
|
|
+
|
|
|
+ boolean retIn =isEffectiveDate(dateStart1,dateStart2,dateEnd2);
|
|
|
+ System.out.println(retIn);
|
|
|
+ boolean retOut =isEffectiveDate(dateEnd1,dateStart2,dateEnd2);
|
|
|
+ System.out.println(retOut);
|
|
|
+ if(retIn&&retOut){
|
|
|
+ System.out.println("444444-全区间");
|
|
|
+ ret=1;
|
|
|
+ }
|
|
|
+ if(!retIn&&retOut){
|
|
|
+ System.out.println("333333-右半区间");
|
|
|
+ ret=2;
|
|
|
+ }
|
|
|
+ if(retIn&&!retOut){
|
|
|
+ System.out.println("222222-左半区间");
|
|
|
+ ret=3;
|
|
|
+ }
|
|
|
+ if(!retIn&&!retOut){
|
|
|
+ System.out.println("11111区间外");
|
|
|
+ ret=4;
|
|
|
+ }
|
|
|
+ return ret;
|
|
|
+
|
|
|
+ }
|
|
|
+ public static void main(String[] args) {
|
|
|
+ //计算要免费减去的分钟数
|
|
|
+ //全区间 true true
|
|
|
+// String temStartDate01="2023-08-03 00:02:21";//停车进出场时间区间
|
|
|
+// String temStartDate02="2023-08-04 07:45:52";
|
|
|
+// String temStartDate1="2022-07-22 00:00:00";//会员开始结束时间区间
|
|
|
+// String temStartDate2="2025-07-22 23:59:59";
|
|
|
+ //右半区间 false true
|
|
|
+// String temStartDate01="2022-06-03 00:02:21";//停车进出场时间区间
|
|
|
+// String temStartDate02="2023-08-04 07:45:52";
|
|
|
+// String temStartDate1="2022-07-22 00:00:00";//会员开始结束时间区间
|
|
|
+// String temStartDate2="2025-07-22 23:59:59";
|
|
|
+ //左半区间 true false
|
|
|
+// String temStartDate01="2022-09-03 00:02:21";//停车进出场时间区间
|
|
|
+// String temStartDate02="2026-08-04 07:45:52";
|
|
|
+// String temStartDate1="2022-07-22 00:00:00";//会员开始结束时间区间
|
|
|
+// String temStartDate2="2025-07-22 23:59:59";
|
|
|
+ //区间外1 false false
|
|
|
+// String temStartDate01="2021-09-03 00:02:21";//停车进出场时间区间
|
|
|
+// String temStartDate02="2021-08-04 07:45:52";
|
|
|
+// String temStartDate1="2022-07-22 00:00:00";//会员开始结束时间区间
|
|
|
+// String temStartDate2="2025-07-22 23:59:59";
|
|
|
+ //区间外2 false false
|
|
|
+// String temStartDate01="2026-09-03 00:02:21";//停车进出场时间区间
|
|
|
+// String temStartDate02="2026-08-04 07:45:52";
|
|
|
+// String temStartDate1="2022-07-22 00:00:00";//会员开始结束时间区间
|
|
|
+// String temStartDate2="2025-07-22 23:59:59";
|
|
|
+ //整个计算过程分3部分 1是计算区间 2是区间为1天 3是区间为2天或以上
|
|
|
+ //1是计算区间
|
|
|
+ String temStartDate01="2023-08-03 03:02:21";//停车进出场时间区间
|
|
|
+ String temStartDate02="2023-08-04 07:45:52";
|
|
|
+ String temStartDate1="2022-07-22 00:00:00";//会员开始结束时间区间
|
|
|
+ String temStartDate2="2025-07-22 23:59:59";
|
|
|
+ String startT="01:00:00";//免费开始时间点
|
|
|
+ String endT="02:00:00";//免费结束时间点
|
|
|
+ long decTimeMins=0;
|
|
|
+ long hourLong =0;
|
|
|
+ int ret= dealDff(temStartDate01,temStartDate02,temStartDate1,temStartDate2);
|
|
|
+ if(ret==2){
|
|
|
+ String temDate1 = DateUtil.format( DateUtil.parse(temStartDate1), "yyyy-MM-dd");
|
|
|
+ String temDate3 = DateUtil.format( DateUtil.parse(temStartDate01), "HH:mm:ss");
|
|
|
+ temStartDate01 =temDate1+" "+temDate3;
|
|
|
+ }
|
|
|
+ if(ret==3){
|
|
|
+ String temDate1 = DateUtil.format( DateUtil.parse(temStartDate2), "yyyy-MM-dd");
|
|
|
+ String temDate3 = DateUtil.format( DateUtil.parse(temStartDate02), "HH:mm:ss");
|
|
|
+ temStartDate02 =temDate1+" "+temDate3;
|
|
|
+ }
|
|
|
+ //2是区间为1天
|
|
|
+ long dayLong =DateUtil.betweenDay(DateUtil.parse(temStartDate01), DateUtil.parse(temStartDate02),true);
|
|
|
+ dayLong =dayLong+1;
|
|
|
+
|
|
|
+ if(dayLong==1){
|
|
|
+ Date dateStart1= DateUtil.parse(temStartDate01);
|
|
|
+ Date dateEnd1= DateUtil.parse(temStartDate02);
|
|
|
+
|
|
|
+ String temDate1 = DateUtil.format(dateStart1, "yyyy-MM-dd");
|
|
|
+ String temDate2 = DateUtil.format(dateEnd1, "yyyy-MM-dd");
|
|
|
+ Date dateStart31= DateUtil.parse(temDate1 + " "+startT);//"2023-08-03 17:00:00"
|
|
|
+ Date dateEnd31= DateUtil.parse(temDate1 + " "+endT);//"2023-08-03 22:00:00"
|
|
|
+ Date dateStart32= DateUtil.parse(temDate2 + " "+startT);//"2023-08-04 17:00:00"
|
|
|
+ Date dateEnd32= DateUtil.parse(temDate2 + " "+endT);//"2023-08-04 22:00:00
|
|
|
+ long llStart1= dateStart31.getTime()-dateStart1.getTime();
|
|
|
+ long llEnd1= dateEnd31.getTime()-dateStart1.getTime();
|
|
|
+ long llStart2= dateStart32.getTime()-dateEnd1.getTime();
|
|
|
+ long llEnd2= dateEnd32.getTime()-dateEnd1.getTime();
|
|
|
+ if(llStart1>0&&llEnd1>0&&llStart2>0&&llEnd2>0){
|
|
|
+ decTimeMins =0;
|
|
|
+ }
|
|
|
+ if(llStart1>0&&llEnd1>0&&llStart2<0&&llEnd2<0){
|
|
|
+ String tem1 = DateUtil.format(new Date(), "yyyy-MM-dd");
|
|
|
+ String temStart1 = tem1 + " "+ startT;
|
|
|
+ String temEnd2 = tem1 + " "+endT;
|
|
|
+ hourLong =DateUtil.between(DateUtil.parse(temStart1), DateUtil.parse(temEnd2), DateUnit.HOUR);
|
|
|
+ decTimeMins =hourLong*60;
|
|
|
+ }
|
|
|
+ if(llStart1>0&&llEnd1>0&&llStart2<0&&llEnd2>0){
|
|
|
+ String tem1 = DateUtil.format(dateStart1, "yyyy-MM-dd");
|
|
|
+ String temStart1 = tem1 + " "+ startT;
|
|
|
+ decTimeMins =DateUtil.between(DateUtil.parse(temStart1), dateEnd1, DateUnit.MINUTE);
|
|
|
+ }
|
|
|
+ if(llStart1<0&&llEnd1>0&&llStart2<0&&llEnd2<0){
|
|
|
+// String tem1 = DateUtil.format(dateStart1, "yyyy-MM-dd");
|
|
|
+// String temStart1 = tem1 + " "+ startT;
|
|
|
+// decTimeMins =DateUtil.between(DateUtil.parse(temStart1), dateStart1, DateUnit.MINUTE);
|
|
|
+ String tem1 = DateUtil.format(dateStart1, "yyyy-MM-dd");
|
|
|
+ String temStart1 = tem1 + " "+ startT;
|
|
|
+ decTimeMins =DateUtil.between(dateStart1, dateEnd31, DateUnit.MINUTE);
|
|
|
+ }
|
|
|
+ if(llStart1<0&&llEnd1<0&&llStart2<0&&llEnd2<0){
|
|
|
+ decTimeMins =0;
|
|
|
+ }
|
|
|
+ //System.out.println("减免时长(分钟):"+decTimeMins);
|
|
|
+ }else{
|
|
|
+ //3是区间为2天或以上
|
|
|
+
|
|
|
+ Date dateStart1= DateUtil.parse(temStartDate01);
|
|
|
+ Date dateEnd1= DateUtil.parse(temStartDate02);
|
|
|
+
|
|
|
+ String temDate1 = DateUtil.format(dateStart1, "yyyy-MM-dd");
|
|
|
+ String temDate2 = DateUtil.format(dateEnd1, "yyyy-MM-dd");
|
|
|
+ Date dateStart31= DateUtil.parse(temDate1 + " "+startT);//"2023-08-03 17:00:00"
|
|
|
+ Date dateEnd31= DateUtil.parse(temDate1 + " "+endT);//"2023-08-03 22:00:00"
|
|
|
+ Date dateStart32= DateUtil.parse(temDate2 + " "+startT);//"2023-08-04 17:00:00"
|
|
|
+ Date dateEnd32= DateUtil.parse(temDate2 + " "+endT);//"2023-08-04 22:00:00"
|
|
|
+ long llStart1= dateStart31.getTime()-dateStart1.getTime();
|
|
|
+ long llEnd1= dateEnd31.getTime()-dateStart1.getTime();
|
|
|
+ long llStart2= dateEnd1.getTime()-dateStart32.getTime();
|
|
|
+ long llEnd2= dateEnd1.getTime()-dateEnd32.getTime();
|
|
|
+ if(llStart1>0&&llEnd1>0&&llStart2>0&&llEnd2>0){
|
|
|
+ String tem1 = DateUtil.format(new Date(), "yyyy-MM-dd");
|
|
|
+ String temStart1 = tem1 + " "+ startT;
|
|
|
+ String temEnd2 = tem1 + " "+endT;
|
|
|
+ hourLong =DateUtil.between(DateUtil.parse(temStart1), DateUtil.parse(temEnd2), DateUnit.HOUR);
|
|
|
+ decTimeMins =dayLong*hourLong*60;
|
|
|
+ }
|
|
|
+ if(llStart1>0&&llEnd1>0&&llStart2>0&&llEnd2<0){
|
|
|
+ dayLong =dayLong-1;
|
|
|
+ String tem1 = DateUtil.format(new Date(), "yyyy-MM-dd");
|
|
|
+ String temStart1 = tem1 + " "+ startT;
|
|
|
+ String temEnd2 = tem1 + " "+endT;
|
|
|
+ hourLong =DateUtil.between(DateUtil.parse(temStart1), DateUtil.parse(temEnd2), DateUnit.HOUR);
|
|
|
+ //天数减1再加上尾数
|
|
|
+ decTimeMins= dayLong*hourLong*60;
|
|
|
+ long minLongL=DateUtil.between(dateStart32, dateEnd1,DateUnit.MINUTE);
|
|
|
+ decTimeMins =decTimeMins+minLongL;
|
|
|
+ }
|
|
|
+ if(llStart1<0&&llEnd1>0&&llStart2>0&&llEnd2>0){
|
|
|
+ dayLong =dayLong-1;
|
|
|
+ String tem1 = DateUtil.format(new Date(), "yyyy-MM-dd");
|
|
|
+ String temStart1 = tem1 + " "+ startT;
|
|
|
+ String temEnd2 = tem1 + " "+endT;
|
|
|
+ hourLong =DateUtil.between(DateUtil.parse(temStart1), DateUtil.parse(temEnd2), DateUnit.HOUR);
|
|
|
+ //天数减1再加上尾数
|
|
|
+ decTimeMins= dayLong*hourLong*60;
|
|
|
+ long minLongL=DateUtil.between(dateStart1, dateEnd31,DateUnit.MINUTE);
|
|
|
+ decTimeMins =decTimeMins+minLongL;
|
|
|
+ }
|
|
|
+ if(llStart1>0&&llEnd1>0&&llStart2<0&&llEnd2<0){
|
|
|
+ dayLong =dayLong-1;
|
|
|
+ String tem1 = DateUtil.format(new Date(), "yyyy-MM-dd");
|
|
|
+ String temStart1 = tem1 + " "+ startT;
|
|
|
+ String temEnd2 = tem1 + " "+endT;
|
|
|
+ hourLong =DateUtil.between(DateUtil.parse(temStart1), DateUtil.parse(temEnd2), DateUnit.HOUR);
|
|
|
+ //天数减1再加上尾数
|
|
|
+ decTimeMins= dayLong*hourLong*60;
|
|
|
+ }
|
|
|
+ if(llStart1<0&&llEnd1<0&&llStart2>0&&llEnd2>0){
|
|
|
+ dayLong =dayLong-1;
|
|
|
+ String tem1 = DateUtil.format(new Date(), "yyyy-MM-dd");
|
|
|
+ String temStart1 = tem1 + " "+ startT;
|
|
|
+ String temEnd2 = tem1 + " "+endT;
|
|
|
+ hourLong =DateUtil.between(DateUtil.parse(temStart1), DateUtil.parse(temEnd2), DateUnit.HOUR);
|
|
|
+ //天数减1再加上尾数
|
|
|
+ decTimeMins= dayLong*hourLong*60;
|
|
|
+ }
|
|
|
+ if(llStart1<0&&llEnd1>0&&llStart2<0&&llEnd2<0){
|
|
|
+
|
|
|
+ decTimeMins=0;
|
|
|
+ long minLongL=DateUtil.between(dateStart1, dateEnd31,DateUnit.MINUTE);
|
|
|
+ decTimeMins =decTimeMins+minLongL;
|
|
|
+ }
|
|
|
+ if(llStart1<0&&llEnd1<0&&llStart2>0&&llEnd2<0){
|
|
|
+
|
|
|
+ decTimeMins= 0;
|
|
|
+ long minLongL=DateUtil.between(dateStart32, dateEnd1,DateUnit.MINUTE);
|
|
|
+ decTimeMins =decTimeMins+minLongL;
|
|
|
+ }
|
|
|
+
|
|
|
+ // System.out.println("减免时长(分钟):"+decTimeMins);
|
|
|
+ }
|
|
|
+ System.out.println("减免时长(分钟):"+decTimeMins);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|