public Resp2 getInAndOutParkingInfoByIsAdded() {
Calendar cal = Calendar.getInstance();
int y = cal.get(Calendar.YEAR);
int m = cal.get(Calendar.MONTH) + 1;
int d = cal.get(Calendar.DATE);
int h = cal.get(Calendar.HOUR_OF_DAY);
int mi = cal.get(Calendar.MINUTE);
int s = cal.get(Calendar.SECOND);
// 当h为0时,h算作23
int h0;
if (h != 0) {
h0 = h - 1;
} else {
h0 = 23;
}
StringBuilder strB = new StringBuilder();
StringBuilder strB0 = new StringBuilder();
// 当h为0时,需要把时间拆分成零点之前和零点之后去查询
String beforeZeroOClockStr = null;
String afterZeroOClockStr = null;
if (h != 0) {
strB.append(y).append("-");
if (m < 10) {
strB.append("0").append(m);
} else {
strB.append(m);
}
strB.append("-");
if (d < 10) {
strB.append("0").append(d);
} else {
strB.append(d);
}
strB.append(" ");
if (h < 10) {
strB.append("0").append(h);
} else {
strB.append(h);
}
strB.append(":");
if (mi < 10) {
strB.append("0").append(mi);
} else {
strB.append(mi);
}
strB.append(":");
if (s < 10) {
strB.append("0").append(s);
} else {
strB.append(s);
}
} else {
// 当h为0时把时间拆分成两个时间段来查询,~~-24:00,00:00-~~
int y1 = y-1;
int d1 = d - 1;
int m1 = m - 1;
int d28 = 28;
int d29 =29;
int d30 = 30;
int d31 = 31;
// 当前日期为1号时,需要做处理
if (d1 != 0) {
strB.append(y).append("-");
if (m < 10) {
strB.append("0").append(m);
} else {
strB.append(m);
}
strB.append("-");
if (d1 < 10) {
strB.append("0").append(d1);
} else {
strB.append(d1);
}
// 往前推一个小时,日期改为昨日
beforeZeroOClockStr = strB.toString() + " 23:59:59";
strB.delete(8, 10);
if (d < 10) {
strB.append("0").append(d);
} else {
strB.append(d);
}
afterZeroOClockStr = strB.toString() + " 00:00:01";
strB.append(" ");
if (h < 10) {
strB.append("0").append(h);
} else {
strB.append(h);
}
strB.append(":");
if (mi < 10) {
strB.append("0").append(mi);
} else {
strB.append(mi);
}
strB.append(":");
if (s < 10) {
strB.append("0").append(s);
} else {
strB.append(s);
}
} else {
if (m == 5 || m == 7 || m == 10 || m == 12) {
strB.append(y).append("-");
if (m1 < 10) {
strB.append("0").append(m1);
} else {
strB.append(m1);
}
strB.append("-");
strB.append(d30);
// 往前推一个小时,日期改为昨日
beforeZeroOClockStr = strB.toString() + " 23:59:59";
String strM;
if (m < 10) {
strM = "0" + Integer.toString(m);
} else {
strM = Integer.toString(m);
}
strB.replace(5, 7, strM);
strB.delete(8, 10);
if (d < 10) {
strB.append("0").append(d);
} else {
strB.append(d);
}
afterZeroOClockStr = strB.toString() + " 00:00:01";
strB.append(" ");
if (h < 10) {
strB.append("0").append(h);
} else {
strB.append(h);
}
strB.append(":");
if (mi < 10) {
strB.append("0").append(mi);
} else {
strB.append(mi);
}
strB.append(":");
if (s < 10) {
strB.append("0").append(s);
} else {
strB.append(s);
}
} else if (m == 2 || m == 4 || m == 6 || m == 8 || m == 9 || m == 11) {
strB.append(y).append("-");
if (m1 < 10) {
strB.append("0").append(m1);
} else {
strB.append(m1);
}
strB.append("-");
strB.append(d31);
// 往前推一个小时,日期改为昨日
beforeZeroOClockStr = strB.toString() + " 23:59:59";
String strM;
if (m < 10) {
strM = "0" + Integer.toString(m);
} else {
strM = Integer.toString(m);
}
strB.replace(5, 7, strM);
strB.delete(8, 10);
if (d < 10) {
strB.append("0").append(d);
} else {
strB.append(d);
}
afterZeroOClockStr = strB.toString() + " 00:00:01";
strB.append(" ");
if (h < 10) {
strB.append("0").append(h);
} else {
strB.append(h);
}
strB.append(":");
if (mi < 10) {
strB.append("0").append(mi);
} else {
strB.append(mi);
}
strB.append(":");
if (s < 10) {
strB.append("0").append(s);
} else {
strB.append(s);
}
} else if (m == 3) {
strB.append(y).append("-");
if (m1 < 10) {
strB.append("0").append(m1);
} else {
strB.append(m1);
}
strB.append("-");
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
strB.append(d29);
} else {
strB.append(d28);
}
// 往前推一个小时,日期改为昨日
beforeZeroOClockStr = strB.toString() + " 23:59:59";
String strM;
if (m < 10) {
strM = "0" + Integer.toString(m);
} else {
strM = Integer.toString(m);
}
strB.replace(5, 7, strM);
strB.delete(8, 10);
if (d < 10) {
strB.append("0").append(d);
} else {
strB.append(d);
}
afterZeroOClockStr = strB.toString() + " 00:00:01";
strB.append(" ");
if (h < 10) {
strB.append("0").append(h);
} else {
strB.append(h);
}
strB.append(":");
if (mi < 10) {
strB.append("0").append(mi);
} else {
strB.append(mi);
}
strB.append(":");
if (s < 10) {
strB.append("0").append(s);
} else {
strB.append(s);
}
} else if(m == 1) {//一月份零点往前推一小时,年份要减1,月份要变为12,日为31
strB.append(y1).append("-");
strB.append("12");
strB.append("-");
strB.append("31");
// 往前推一个小时,日期改为昨日
beforeZeroOClockStr = strB.toString() + " 23:59:59";
String strM;
if (m < 10) {
strM = "0" + Integer.toString(m);
} else {
strM = Integer.toString(m);
}
strB.replace(0, 4, Integer.toString(y));
strB.replace(5, 7, strM);
strB.delete(8, 10);
if (d < 10) {
strB.append("0").append(d);
} else {
strB.append(d);
}
afterZeroOClockStr = strB.toString() + " 00:00:01";
strB.append(" ");
if (h < 10) {
strB.append("0").append(h);
} else {
strB.append(h);
}
strB.append(":");
if (mi < 10) {
strB.append("0").append(mi);
} else {
strB.append(mi);
}
strB.append(":");
if (s < 10) {
strB.append("0").append(s);
} else {
strB.append(s);
}
}
}
}
// 当前时间往前推一个小时,一个小时前:strB0,当前时间:strB
if (h0 != 23) {
strB0.append(y).append("-");
if (m < 10) {
strB0.append("0").append(m);
} else {
strB0.append(m);
}
strB0.append("-");
if (d < 10) {
strB0.append("0").append(d);
} else {
strB0.append(d);
}
strB0.append(" ");
if (h0 < 10) {
strB0.append("0").append(h0);
} else {
strB0.append(h0);
}
strB0.append(":");
if (mi < 10) {
strB0.append("0").append(mi);
} else {
strB0.append(mi);
}
strB0.append(":");
if (s < 10) {
strB0.append("0").append(s);
} else {
strB0.append(s);
}
} else {// 零点往前推一小时,日期减一天
// 月初第一天的零点,往前推一小时是上个月,月份减一天
int y0 = y-1;
int d0 = d - 1;
int d28 = 28;
int d29 = 29;
int d30 = 30;
int d31 = 31;
int m1 = m - 1;
strB0.append(y).append("-");
// 如果日期为1号,月份往前推一个月
if (d == 1) {
if (m == 5 || m == 7 || m == 10 || m == 12) {
if (m1 < 10) {
strB0.append("0").append(m1);
} else {
strB0.append(m1);
}
strB0.append("-");
strB0.append(d30);
strB0.append(" ");
if (h0 < 10) {
strB0.append("0").append(h0);
} else {
strB0.append(h0);
}
strB0.append(":");
if (mi < 10) {
strB0.append("0").append(mi);
} else {
strB0.append(mi);
}
strB0.append(":");
if (s < 10) {
strB0.append("0").append(s);
} else {
strB0.append(s);
}
} else if (m == 2 || m == 4 || m == 6 || m == 8 || m == 9 || m == 11) {
if (m1 < 10) {
strB0.append("0").append(m1);
} else {
strB0.append(m1);
}
strB0.append("-");
strB0.append(d31);
strB0.append(" ");
if (h0 < 10) {
strB0.append("0").append(h0);
} else {
strB0.append(h0);
}
strB0.append(":");
if (mi < 10) {
strB0.append("0").append(mi);
} else {
strB0.append(mi);
}
strB0.append(":");
if (s < 10) {
strB0.append("0").append(s);
} else {
strB0.append(s);
}
} else if (m == 3) {
if (m1 < 10) {
strB0.append("0").append(m1);
} else {
strB0.append(m1);
}
strB0.append("-");
//是否为闰年做处理
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) {
strB0.append(d29);
} else {
strB0.append(d28);
}
strB0.append(" ");
if (h0 < 10) {
strB0.append("0").append(h0);
} else {
strB0.append(h0);
}
strB0.append(":");
if (mi < 10) {
strB0.append("0").append(mi);
} else {
strB0.append(mi);
}
strB0.append(":");
if (s < 10) {
strB0.append("0").append(s);
} else {
strB0.append(s);
}
} else if (m == 1) {//一月份零点往前推一小时,年份要减1,月份要变为12,日为31
String strY = Integer.toString(y0);
strB0.replace(0, 4, strY);
strB0.append("12");
strB0.append("-");
strB0.append(d31);
strB0.append(" ");
if (h0 < 10) {
strB0.append("0").append(h0);
} else {
strB0.append(h0);
}
strB0.append(":");
if (mi < 10) {
strB0.append("0").append(mi);
} else {
strB0.append(mi);
}
strB0.append(":");
if (s < 10) {
strB0.append("0").append(s);
} else {
strB0.append(s);
}
}
} else {
if (m < 10) {
strB0.append("0").append(m);
} else {
strB0.append(m);
}
strB0.append("-");
if (d0 < 10) {
strB0.append("0").append(d0);
} else {
strB0.append(d0);
}
strB0.append(" ");
if (h0 < 10) {
strB0.append("0").append(h0);
} else {
strB0.append(h0);
}
strB0.append(":");
if (mi < 10) {
strB0.append("0").append(mi);
} else {
strB0.append(mi);
}
strB0.append(":");
if (s < 10) {
strB0.append("0").append(s);
} else {
strB0.append(s);
}
}
}
String anHourAgoStr = strB0.toString();
String currentTimeStr = strB.toString();
System.out.println("一小时前:" + anHourAgoStr + "," + "当前时间:" + currentTimeStr);
System.out.println(
"beforeZeroOClockStr:" + beforeZeroOClockStr + "," + "afterZeroOClockStr:" + afterZeroOClockStr);
Date anHourAgo = null;
Date currentTime = null;
try {
anHourAgo = DateUtil.stringToDate(anHourAgoStr, DateUtil.DATETIME_FORMAT);
currentTime = DateUtil.stringToDate(currentTimeStr, DateUtil.DATETIME_FORMAT);
} catch (Exception e1) {
return new Resp2(ResCode.TIME_FORMAT_ERROR);
}
//小时不为零点时
if (h != 0) {
List<ParkingLogFull> addedList = parkingLogFullMapper.getByCurrentTimeAndIsAdded(anHourAgo, currentTime);
System.out.println("addedList长度为:" + addedList.size());
for(ParkingLogFull parkingLogFull : addedList) {
Long arriveTime = parkingLogFull.getArriveTime();
Long leaveTime = parkingLogFull.getLeaveTime();
if (arriveTime != null && leaveTime != null) {
//以离场时间为准,查出该时间段内的数据总量
}
if (leaveTime.toString().isEmpty() && arriveTime != null) {
//以进场时间为准,查出该时间段内的数据总量
}
}
} else {// h为0时,分开时段处理
Date beforeZeroOClock = null;
Date afterZeroOClock = null;
try {
System.out.println("开始转换时间格式");
beforeZeroOClock = DateUtil.stringToDate(beforeZeroOClockStr, DateUtil.DATETIME_FORMAT);
afterZeroOClock = DateUtil.stringToDate(afterZeroOClockStr, DateUtil.DATETIME_FORMAT);
} catch (Exception e1) {
return new Resp2(ResCode.TIME_FORMAT_ERROR);
}
System.out.println(
"当前h为0," + "beforeZeroOClock:" + beforeZeroOClock + "," + "afterZeroOClock:" + afterZeroOClock);
List<ParkingLogFull> addedListBeforeZeroOClock = parkingLogFullMapper.getByCurrentTimeAndIsAdded(anHourAgo,
beforeZeroOClock);
List<ParkingLogFull> addedListAfterZeroOClock = parkingLogFullMapper
.getByCurrentTimeAndIsAdded(afterZeroOClock, currentTime);
System.out.println("零点之前:addedListBeforeZeroOClockadded长度为:" + addedListBeforeZeroOClock.size());
System.out.println("零点之后:addedListAfterZeroOClock长度为:" + addedListAfterZeroOClock.size());
}
return null;
}