From 2291fba3ed16336860050a4a18c6860cb2396b1b Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期二, 27 二月 2024 17:04:43 +0800
Subject: [PATCH] 优化代码
---
java110-utils/src/main/java/com/java110/utils/util/DateUtil.java | 183 +++++++++++++++++----------------------------
1 files changed, 69 insertions(+), 114 deletions(-)
diff --git a/java110-utils/src/main/java/com/java110/utils/util/DateUtil.java b/java110-utils/src/main/java/com/java110/utils/util/DateUtil.java
index f6ef10d..b2ae91d 100755
--- a/java110-utils/src/main/java/com/java110/utils/util/DateUtil.java
+++ b/java110-utils/src/main/java/com/java110/utils/util/DateUtil.java
@@ -822,67 +822,17 @@
startCalendar.setTime(startDate);
Calendar endCalender = Calendar.getInstance();
endCalender.setTime(endDate);
- if (startCalendar.get(Calendar.DAY_OF_MONTH) == endCalender.get(Calendar.DAY_OF_MONTH)) {
+ if (
+ startCalendar.get(Calendar.DAY_OF_MONTH) == endCalender.get(Calendar.DAY_OF_MONTH)
+ && startCalendar.get(Calendar.HOUR_OF_DAY) == endCalender.get(Calendar.HOUR_OF_DAY)
+ ) {
return true;
}
return false;
}
- public static double dayCompare(Date fromDate, Date toDate) {
- double resMonth = 0.0;
- Calendar from = Calendar.getInstance();
- from.setTime(fromDate);
- Calendar to = Calendar.getInstance();
- to.setTime(toDate);
- //姣旇緝鏈堜唤宸� 鍙兘鏈夋暣鏁� 涔熶細璐熸暟
- int result = to.get(Calendar.MONTH) - from.get(Calendar.MONTH);
- //姣旇緝骞村樊
- int month = (to.get(Calendar.YEAR) - from.get(Calendar.YEAR)) * 12;
- //鐪熷疄 鐩稿樊鏈堜唤
- result = result + month;
-
- //寮�濮嬫椂闂� 2021-06-01 2021-08-05 result = 2 2021-08-01
- Calendar newFrom = Calendar.getInstance();
- newFrom.setTime(fromDate);
- newFrom.add(Calendar.MONTH, result);
- //濡傛灉鍔犳湀浠藉悗 澶т簬浜嗗綋鍓嶆椂闂� 榛樿鍔� 鏈堜唤 -1 鎯呭喌 12-19 21-01-10
- //杩欎釜鏄鐨勯�昏緫涓�瀹氬ソ濂界悊瑙�
- if (newFrom.getTime().getTime() > toDate.getTime()) {
- newFrom.setTime(fromDate);
- result = result - 1;
- newFrom.add(Calendar.MONTH, result);
- }
-
- // t1 2021-08-01 t2 2021-08-05
- long t1 = newFrom.getTime().getTime();
- long t2 = to.getTime().getTime();
- //鐩稿樊姣
- double days = (t2 - t1) * 1.00 / (24 * 60 * 60 * 1000);
- BigDecimal tmpDays = new BigDecimal(days); //鐩稿樊澶╂暟
- BigDecimal monthDay = null;
- Calendar newFromMaxDay = Calendar.getInstance();
- newFromMaxDay.set(newFrom.get(Calendar.YEAR), newFrom.get(Calendar.MONTH), 1, 0, 0, 0);
- newFromMaxDay.add(Calendar.MONTH, 1); //涓嬩釜鏈�1鍙�
- //鍦ㄥ綋鍓嶆湀涓� 杩欏潡鏈夐棶棰�
- if (toDate.getTime() < newFromMaxDay.getTime().getTime()) {
- monthDay = new BigDecimal(newFrom.getActualMaximum(Calendar.DAY_OF_MONTH));
- return tmpDays.divide(monthDay, 4, BigDecimal.ROUND_HALF_UP).add(new BigDecimal(result)).doubleValue();
- }
- // 涓婃湀澶╂暟
- days = (newFromMaxDay.getTimeInMillis() - t1) * 1.00 / (24 * 60 * 60 * 1000);
- tmpDays = new BigDecimal(days);
- monthDay = new BigDecimal(newFrom.getActualMaximum(Calendar.DAY_OF_MONTH));
- BigDecimal preRresMonth = tmpDays.divide(monthDay, 4, BigDecimal.ROUND_HALF_UP);
-
- //涓嬫湀澶╂暟
- days = (t2 - newFromMaxDay.getTimeInMillis()) * 1.00 / (24 * 60 * 60 * 1000);
- tmpDays = new BigDecimal(days);
- monthDay = new BigDecimal(newFromMaxDay.getActualMaximum(Calendar.DAY_OF_MONTH));
- resMonth = tmpDays.divide(monthDay, 4, BigDecimal.ROUND_HALF_UP).add(new BigDecimal(result)).add(preRresMonth).doubleValue();
- return resMonth;
- }
/**
* 璁$畻 fromDate 2023-01-12 toDate 2023-09-15
@@ -893,66 +843,71 @@
* @param toDate
* @return
*/
-// public static double dayCompare(Date fromDate, Date toDate) {
-//
-//
-// //todo 闇�瑕佽绠椾笁绔椂闂� 鐩稿姞鍗冲彲
-// Date fromDateFirstDate = fromDate; // 绗竴涓�1鏃�
-//
-// Date toDateFirstDate = toDate; // 鏈�鍚庝竴涓�1鏃�
-//
-// boolean firstDay = true;
-//
-// //todo 1.0 璁$畻 fromDateFirstDate
-// Calendar fromDateCal = Calendar.getInstance();
-// fromDateCal.setTime(fromDate);
-// fromDateCal.set(Calendar.DAY_OF_MONTH, 1);
-// if (fromDate.getTime() > fromDateCal.getTime().getTime()) {
-// fromDateCal.add(Calendar.MONTH, 1);
-// firstDay = false;
-// fromDateFirstDate = fromDateCal.getTime();
-// }
-//
-// //todo 2.0 璁$畻 toDateFirstDate
-// Calendar toDateCal = Calendar.getInstance();
-// toDateCal.setTime(toDate);
-// toDateCal.set(Calendar.DAY_OF_MONTH, 1);
-// if (toDate.getTime() > toDateCal.getTime().getTime()) {
-// toDateFirstDate = toDateCal.getTime();
-// }
-//
-// // todo 3.0 璁$畻鏁存暟鏈� fromDateFirstDate ---> toDateFirstDate
-// Calendar from = Calendar.getInstance();
-// from.setTime(fromDateFirstDate);
-// Calendar to = Calendar.getInstance();
-// to.setTime(toDateFirstDate);
-// //姣旇緝鏈堜唤宸� 鍙兘鏈夋暣鏁� 涔熶細璐熸暟
-// int result = to.get(Calendar.MONTH) - from.get(Calendar.MONTH);
-// //姣旇緝骞村樊
-// int month = (to.get(Calendar.YEAR) - from.get(Calendar.YEAR)) * 12;
-// //鐪熷疄 鐩稿樊鏈堜唤
-// result = result + month;
-//
-// //todo 3.1 濡傛灉 fromDate 鍜宼oDate 鏄悓涓�澶� 鍒欑洿鎺ヨ繑鍥炴暣鏈堬紝涓嶅啀璁$畻 4.0 鍜�5.0
-// if (DateUtil.sameMonthDay(fromDate, toDate)) {
-// return firstDay ? result : result + 1;
-// }
-//
-// // todo 4.0 璁$畻 fromDate ---> fromDateFirstDate 鐨勬湀浠�
-// double days = (fromDateFirstDate.getTime() - fromDate.getTime()) * 1.00 / (24 * 60 * 60 * 1000);
-// BigDecimal tmpDays = new BigDecimal(days); //鐩稿樊澶╂暟
-// BigDecimal monthDay = new BigDecimal(DateUtil.getMonthDay(fromDate));
-// BigDecimal resMonth = tmpDays.divide(monthDay, 4, BigDecimal.ROUND_HALF_UP).add(new BigDecimal(result));
-//
-// // todo 5.0 璁$畻 toDateFirstDate ----> toDate 鏈堜唤
-// days = (toDate.getTime() - toDateFirstDate.getTime()) * 1.00 / (24 * 60 * 60 * 1000);
-// tmpDays = new BigDecimal(days); //鐩稿樊澶╂暟
-// monthDay = new BigDecimal(DateUtil.getMonthDay(toDate));
-// resMonth = tmpDays.divide(monthDay, 4, BigDecimal.ROUND_HALF_UP).add(resMonth);
-//
-// return resMonth.doubleValue();
-//
-// }
+ public static double dayCompare(Date fromDate, Date toDate) {
+
+
+ //todo 闇�瑕佽绠椾笁绔椂闂� 鐩稿姞鍗冲彲
+ Date fromDateFirstDate = fromDate; // 绗竴涓�1鏃�
+
+ Date toDateFirstDate = toDate; // 鏈�鍚庝竴涓�1鏃�
+
+ boolean firstDay = true;
+
+ //todo 1.0 璁$畻 fromDateFirstDate
+ Calendar fromDateCal = Calendar.getInstance();
+ fromDateCal.setTime(fromDate);
+ fromDateCal.set(Calendar.DAY_OF_MONTH, 1);
+ fromDateCal.set(Calendar.HOUR_OF_DAY,0);
+ fromDateCal.set(Calendar.MINUTE,0);
+ if (fromDate.getTime() > fromDateCal.getTime().getTime()) {
+ fromDateCal.add(Calendar.MONTH, 1);
+ firstDay = false;
+ fromDateFirstDate = fromDateCal.getTime();
+ }
+
+ //todo 2.0 璁$畻 toDateFirstDate
+ Calendar toDateCal = Calendar.getInstance();
+ toDateCal.setTime(toDate);
+ toDateCal.set(Calendar.DAY_OF_MONTH, 1);
+ toDateCal.set(Calendar.HOUR_OF_DAY,0);
+ toDateCal.set(Calendar.MINUTE,0);
+
+ if (toDate.getTime() > toDateCal.getTime().getTime()) {
+ toDateFirstDate = toDateCal.getTime();
+ }
+
+ // todo 3.0 璁$畻鏁存暟鏈� fromDateFirstDate ---> toDateFirstDate
+ Calendar from = Calendar.getInstance();
+ from.setTime(fromDateFirstDate);
+ Calendar to = Calendar.getInstance();
+ to.setTime(toDateFirstDate);
+ //姣旇緝鏈堜唤宸� 鍙兘鏈夋暣鏁� 涔熶細璐熸暟
+ int result = to.get(Calendar.MONTH) - from.get(Calendar.MONTH);
+ //姣旇緝骞村樊
+ int month = (to.get(Calendar.YEAR) - from.get(Calendar.YEAR)) * 12;
+ //鐪熷疄 鐩稿樊鏈堜唤
+ result = result + month;
+
+ //todo 3.1 濡傛灉 fromDate 鍜宼oDate 鏄悓涓�澶� 鍒欑洿鎺ヨ繑鍥炴暣鏈堬紝涓嶅啀璁$畻 4.0 鍜�5.0
+ if (DateUtil.sameMonthDay(fromDate, toDate)) {
+ return firstDay ? result : result + 1;
+ }
+
+ // todo 4.0 璁$畻 fromDate ---> fromDateFirstDate 鐨勬湀浠�
+ double days = (fromDateFirstDate.getTime() - fromDate.getTime()) * 1.00 / (24 * 60 * 60 * 1000);
+ BigDecimal tmpDays = new BigDecimal(days); //鐩稿樊澶╂暟
+ BigDecimal monthDay = new BigDecimal(DateUtil.getMonthDay(fromDate));
+ BigDecimal resMonth = tmpDays.divide(monthDay, 4, BigDecimal.ROUND_HALF_UP).add(new BigDecimal(result));
+
+ // todo 5.0 璁$畻 toDateFirstDate ----> toDate 鏈堜唤
+ days = (toDate.getTime() - toDateFirstDate.getTime()) * 1.00 / (24 * 60 * 60 * 1000);
+ tmpDays = new BigDecimal(days); //鐩稿樊澶╂暟
+ monthDay = new BigDecimal(DateUtil.getMonthDay(toDate));
+ resMonth = tmpDays.divide(monthDay, 4, BigDecimal.ROUND_HALF_UP).add(resMonth);
+
+ return resMonth.doubleValue();
+
+ }
public static Date getTargetEndTime(double month, Date startDate) {
Calendar endDate = Calendar.getInstance();
--
Gitblit v1.8.0