From 9a731aebce2df54fe3dab3c663e7943572ec7abf Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期二, 26 七月 2022 11:34:56 +0800
Subject: [PATCH] 优化小数点后4位
---
service-user/src/test/java/com/java110/user/AppTest.java | 69 ++++++++++++++++++++++++++++++++++
1 files changed, 69 insertions(+), 0 deletions(-)
diff --git a/service-user/src/test/java/com/java110/user/AppTest.java b/service-user/src/test/java/com/java110/user/AppTest.java
index 1ebafe1..10e9dbb 100755
--- a/service-user/src/test/java/com/java110/user/AppTest.java
+++ b/service-user/src/test/java/com/java110/user/AppTest.java
@@ -1,8 +1,13 @@
package com.java110.user;
+import com.java110.utils.util.DateUtil;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
+
+import java.math.BigDecimal;
+import java.util.Calendar;
+import java.util.Date;
/**
* Unit test for simple App.
@@ -33,7 +38,71 @@
*/
public void testApp()
{
+ Date startTime = DateUtil.getDateFromStringB("2022-07-01");
+ Date endTime = DateUtil.getDateFromStringB("2022-07-27");
+ double month = dayCompare(startTime,endTime);
+ System.out.println(month);
+ }
+ /**
+ * 璁$畻 涓や釜鏃堕棿鐐规湀浠�
+ *
+ * @param fromDate 寮�濮嬫椂闂�
+ * @param toDate 缁撴潫鏃堕棿
+ * @return
+ */
+ public 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;
}
}
--
Gitblit v1.8.0