From ebeb1441ce5bd4c93cfd733b1b2825ca5b6d5c03 Mon Sep 17 00:00:00 2001
From: chengf <cgf12138@163.com>
Date: 星期四, 28 八月 2025 18:14:40 +0800
Subject: [PATCH] 暂存0828
---
java110-utils/src/main/java/com/java110/utils/util/DateUtil.java | 59 ++++++++++++++++++++++++++++++++++++-----------------------
1 files changed, 36 insertions(+), 23 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 11be8ac..b8badfb 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
@@ -7,6 +7,7 @@
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.LocalDate;
+import java.time.LocalDateTime;
import java.time.Period;
import java.time.format.DateTimeFormatter;
import java.util.*;
@@ -39,7 +40,7 @@
public static final String DATE_FORMATE_STRING_N = "HHmmss";
public static final String DATE_FORMATE_STRING_O = "yyyyMMddHHmm";
public static final String DATE_FORMATE_STRING_Q = "yyyy-MM";
- private static final DateTimeFormatter DEFAULT_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+ private static final DateTimeFormatter DEFAULT_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
static {
@@ -517,15 +518,7 @@
return a.getActualMaximum(Calendar.DAY_OF_MONTH);
}
- public static void main(String[] args) throws ParseException {
-// SimpleDateFormat sf = new SimpleDateFormat(DateUtil.DATE_FORMATE_STRING_A);
-// Calendar c = Calendar.getInstance();
-// c.setTime(DateUtil.getDateFromString("2021-12-03",DateUtil.DATE_FORMATE_STRING_A));
-// c.add(Calendar.DAY_OF_MONTH, 125);
-// System.out.println("澧炲姞涓�澶╁悗鏃ユ湡:"+sf.format(c.getTime()));
- System.out.println("2021-12-07".compareTo(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_B)));
- }
public static String getAddDayString(Date date, String pattern, int days) {
SimpleDateFormat sf = new SimpleDateFormat(pattern);
@@ -1023,29 +1016,49 @@
/**
* 璁$畻涓や釜瀛楃涓叉棩鏈熶箣闂寸殑鏈堟暟锛堣秴杩囦竴涓暣鏈堝垯+1锛�
- * @param startDateStr 寮�濮嬫棩鏈熷瓧绗︿覆锛堟牸寮忥細yyyy-MM-dd锛�
- * @param endDateStr 缁撴潫鏃ユ湡瀛楃涓诧紙鏍煎紡锛歽yyy-MM-dd锛�
+ * @param startDateStr 寮�濮嬫棩鏈熷瓧绗︿覆
+ * @param endDateStr 缁撴潫鏃ユ湡瀛楃涓�
* @return 鏈堟暟宸�
*/
public static int calculateMonths(String startDateStr, String endDateStr) {
- // 1. 灏嗗瓧绗︿覆瑙f瀽涓篖ocalDate
- LocalDate startDate = LocalDate.parse(startDateStr, DEFAULT_FORMATTER);
- LocalDate endDate = LocalDate.parse(endDateStr, DEFAULT_FORMATTER);
- // 2. 纭繚寮�濮嬫棩鏈熷湪缁撴潫鏃ユ湡涔嬪墠
- if (startDate.isAfter(endDate)) {
- LocalDate temp = startDate;
- startDate = endDate;
- endDate = temp;
+ startDateStr = dateTimeToDate(startDateStr);
+ endDateStr = dateTimeToDate(endDateStr);
+ // 瑙f瀽鏃堕棿瀛楃涓蹭负LocalDateTime
+ LocalDateTime start = LocalDateTime.parse(startDateStr + " 00:00:00", DEFAULT_FORMATTER);
+ LocalDateTime end = LocalDateTime.parse(endDateStr + " 23:59:59", DEFAULT_FORMATTER);
+
+ // 纭繚寮�濮嬫椂闂村湪缁撴潫鏃堕棿涔嬪墠
+ if (start.isAfter(end)) {
+ LocalDateTime temp = start;
+ start = end;
+ end = temp;
}
- // 3. 璁$畻瀹屾暣鏈堟暟
- Period period = Period.between(startDate, endDate);
+
+ // 鎻愬彇鏃ユ湡閮ㄥ垎璁$畻瀹屾暣鏈堟暟
+ Period period = Period.between(start.toLocalDate(), end.toLocalDate());
int fullMonths = period.getYears() * 12 + period.getMonths();
- // 4. 鑻ュぉ鏁板樊>0锛岃鏄庤秴杩囨暣鏈堬紝棰濆鍔�1
- if (period.getDays() > 0) {
+ // 璁$畻瀹屾暣鏈堟暟鍚庣殑鐩爣鏃堕棿锛堢敤浜庡垽鏂槸鍚﹀垰濂芥暣鏈堬級
+ LocalDateTime targetTime = start.plusYears(period.getYears()).plusMonths(period.getMonths());
+
+ // 鍒ゆ柇瀹為檯缁撴潫鏃堕棿鏄惁瓒呰繃鐩爣鏃堕棿锛堝嵆瀛樺湪棰濆鏃堕棿锛�
+ boolean hasExtraTime = end.isAfter(targetTime);
+
+ // 鏈夐澶栨椂闂村垯鍔�1涓湀
+ if (hasExtraTime) {
fullMonths++;
}
return fullMonths;
}
+ public static void main(String[] args) throws ParseException {
+
+// SimpleDateFormat sf = new SimpleDateFormat(DateUtil.DATE_FORMATE_STRING_A);
+// Calendar c = Calendar.getInstance();
+// c.setTime(DateUtil.getDateFromString("2021-12-03",DateUtil.DATE_FORMATE_STRING_A));
+// c.add(Calendar.DAY_OF_MONTH, 125);
+// System.out.println("澧炲姞涓�澶╁悗鏃ユ湡:"+sf.format(c.getTime()));
+ System.out.println(calculateMonths("2025-02-01 00:00:00", "2025-02-28"));
+ }
+
}
--
Gitblit v1.8.0