From 2b1d15c6bfadb41714fa69e4fe899d3c4e6d776b Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期二, 26 三月 2024 14:19:47 +0800
Subject: [PATCH] #完善工具类

---
 src/main/webapp/views/index.html                                |    8 
 src/main/java/com/zy/crm/manager/utils/TimeCalculatorUtils.java |  234 +++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 233 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/zy/crm/manager/utils/TimeCalculatorUtils.java b/src/main/java/com/zy/crm/manager/utils/TimeCalculatorUtils.java
index 880a559..8248d8f 100644
--- a/src/main/java/com/zy/crm/manager/utils/TimeCalculatorUtils.java
+++ b/src/main/java/com/zy/crm/manager/utils/TimeCalculatorUtils.java
@@ -1,12 +1,13 @@
 package com.zy.crm.manager.utils;
 
+import javax.xml.crypto.Data;
+import java.time.DayOfWeek;
 import java.time.LocalDate;
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
+import java.time.ZoneId;
 import java.time.temporal.ChronoUnit;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.TimeZone;
+import java.time.temporal.TemporalAdjusters;
+import java.time.temporal.WeekFields;
+import java.util.*;
 
 public class TimeCalculatorUtils {
 
@@ -49,6 +50,22 @@
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         calendar.add(Calendar.DAY_OF_MONTH, -1);
+        return calendar.getTime();
+    }
+
+    //鑾峰彇涓冨ぉ鍓嶇殑鏃ユ湡锛堟棩鏈熷ぉ鏁板噺涓冿級
+    public static Date timeFrontSevenYesterday(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, -7);
+        return calendar.getTime();
+    }
+
+    //鑾峰彇涓冨ぉ鍚庣殑鏃ユ湡锛堟棩鏈熷ぉ鏁板姞涓冿級
+    public static Date timeAfterSevenYesterday(Date date){
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.DAY_OF_MONTH, 7);
         return calendar.getTime();
     }
 
@@ -138,4 +155,211 @@
         }
     }
 
+    //java.time.LocalDate 杞崲涓� java.util.Date;
+    public static Date DateLocalDate(LocalDate localDate) {
+        return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+    }
+
+    //鑾峰彇鐜板湪鏃ユ湡鏄綋鏈堢鍑犲懆
+    public static int WeeklyNowMonth(Date date) {
+//        LocalDate currentDate = LocalDate.now();
+        LocalDate currentDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+
+        WeekFields weekFields = WeekFields.of(Locale.getDefault());
+
+        int weekOfMonth = currentDate.get(weekFields.weekOfMonth());
+
+
+        return weekOfMonth;
+    }
+
+    //闄愬埗涓や釜鏃ユ湡鏄懆涓�鍜屽懆鏈�  宸ヤ綔鏃�  鍛ㄤ竴鍒板懆鍏�
+    public static void WeeklySix(Date date) {
+//        LocalDate startDate = LocalDate.of(2022, 9, 5); // 鍋囪寮�濮嬫棩鏈熸槸2022骞�9鏈�5鏃ワ紝鍛ㄤ竴
+        LocalDate startDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+        System.out.println("褰撳墠鏃ユ湡 " + startDate + " 鍛�");
+
+        LocalDate endDate = startDate.plus(6, ChronoUnit.DAYS); // 缁撴潫鏃ユ湡鏄紑濮嬫棩鏈熷姞涓�6澶�
+        System.out.println("褰撳墠鏃ユ湡鍔犱笂6澶╂槸 " + endDate + " 鍛�");
+
+
+        // 濡傛灉寮�濮嬫棩鏈熶笉鏄懆涓�锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆涓�
+        if (startDate.getDayOfWeek() != DayOfWeek.MONDAY) {
+            startDate = startDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
+        }
+
+        // 濡傛灉缁撴潫鏃ユ湡涓嶆槸鍛ㄦ湯锛堝嵆鍛ㄥ叚鎴栧懆鏃ワ級锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆鏈�
+        if (endDate.getDayOfWeek() != DayOfWeek.SATURDAY && endDate.getDayOfWeek() != DayOfWeek.SUNDAY) {
+            endDate = endDate.with(TemporalAdjusters.next(DayOfWeek.SATURDAY));
+        }
+
+        // 纭繚涓や釜鏃ユ湡涔嬮棿鐩搁殧涓冨ぉ
+        while (startDate.plus(7, ChronoUnit.DAYS).isBefore(endDate)) {
+            startDate = startDate.plus(7, ChronoUnit.DAYS);
+        }
+
+        System.out.println("寮�濮嬫棩鏈燂細" + startDate);
+        System.out.println("缁撴潫鏃ユ湡锛�" + endDate);
+    }
+
+    //闄愬埗涓や釜鏃ユ湡鏄懆涓�鍜屽懆鏈�  鍛ㄤ竴鍒板懆鏃�
+    public static List<Date> WeeklySeven(Date date) {
+//        LocalDate startDate = LocalDate.of(2022, 9, 5); // 鍋囪寮�濮嬫棩鏈熸槸2022骞�9鏈�5鏃ワ紝鍛ㄤ竴
+        LocalDate startDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+//        System.out.println("褰撳墠鏃ユ湡 " + startDate + " 鍛�");
+
+        LocalDate endDate = startDate.plus(6, ChronoUnit.DAYS); // 缁撴潫鏃ユ湡鏄紑濮嬫棩鏈熷姞涓�6澶�
+//        System.out.println("褰撳墠鏃ユ湡鍔犱笂6澶╂槸 " + endDate + " 鍛�");
+
+        // 濡傛灉寮�濮嬫棩鏈熶笉鏄懆涓�锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆涓�
+        if (startDate.getDayOfWeek() != DayOfWeek.MONDAY) {
+            startDate = startDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
+        }
+
+        // 濡傛灉缁撴潫鏃ユ湡涓嶆槸鍛ㄦ棩锛屽垯灏嗗畠璋冩暣鍒颁笅涓�涓懆鏃�
+        if (endDate.getDayOfWeek() != DayOfWeek.SUNDAY) {
+            endDate = endDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
+        }
+
+        // 纭繚涓や釜鏃ユ湡涔嬮棿鐩搁殧涓冨ぉ
+        while (startDate.plus(7, ChronoUnit.DAYS).isBefore(endDate)) {
+            startDate = startDate.plus(7, ChronoUnit.DAYS);
+        }
+
+        List<Date> dateList = new ArrayList<>();
+        dateList.add(DateLocalDate(startDate));
+        dateList.add(DateLocalDate(endDate));
+        return dateList;
+//        System.out.println("寮�濮嬫棩鏈燂細" + startDate);
+//        System.out.println("缁撴潫鏃ユ湡锛�" + endDate);
+    }
+
+    //鍒ゆ柇鏄笉鏄懆涓�
+    public static boolean WeeklyOneSign(Date date) {
+        LocalDate localDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+        // 鍒ゆ柇鏄笉鏄懆涓�
+        if (localDate.getDayOfWeek() != DayOfWeek.MONDAY) {
+            return false;
+        }
+        return true;
+    }
+
+    //鍒ゆ柇鏄笉鏄懆涓� 濡傛灉鏃ユ湡涓嶆槸鍛ㄤ竴锛屽垯灏嗗畠璋冩暣鍒版湰鍛ㄥ懆涓�
+    public static Date WeeklyMonday (Date date) {
+        LocalDate localDate = LocalDate.of(timeYest(date), timeMonth(date), timeDay(date));
+        // 鍒ゆ柇鏄笉鏄懆涓� 鍒欏皢瀹冭皟鏁村埌涓嬪懆鍛ㄤ竴
+        if (WeeklyOneSign(date)) {
+            localDate = localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
+        }
+        // 灏哃ocalDate杞崲涓篋ate
+        Date monday = DateLocalDate(localDate);
+
+        // 鍒欏皢瀹冭皟鏁村埌鏈懆鍛ㄤ竴
+        Date nowMonday = timeFrontSevenYesterday(monday);
+
+
+        return nowMonday;
+    }
+
+    //鑾峰彇褰撳墠鏃ユ湡鎵�鍦ㄧ殑鍛ㄤ竴鍙婂懆鏃ユ椂闂�
+    public static List<Date> WeeklyMondayAndSundayNow(Date date) {
+        Date nowMonday = WeeklyMonday(date);
+        return WeeklySeven(nowMonday);
+    }
+
+    //鑾峰彇褰撳墠鏃ユ湡涓婁竴鍛ㄥ懆涓�鍙婂懆鏃ユ椂闂�
+    public static List<Date> WeeklyMondayAndSundayFront(Date date) {
+        Date nowMonday = WeeklyMonday(date);
+        Date frontSevenYesterday = timeFrontSevenYesterday(nowMonday);
+        return WeeklySeven(frontSevenYesterday);
+    }
+
+    //鑾峰彇褰撳墠鏃ユ湡涓嬩竴鍛ㄥ懆涓�鍙婂懆鏃ユ椂闂�
+    public static List<Date> WeeklyMondayAndSundayAfter(Date date) {
+        Date nowMonday = WeeklyMonday(date);
+        Date afterSevenYesterday = timeAfterSevenYesterday(nowMonday);
+        return WeeklySeven(afterSevenYesterday);
+    }
+
+    public static void main(String[] args) {
+        Date now = new Date();
+        //鏈懆
+        List<Date> dateList = WeeklyMondayAndSundayNow(now);
+        for (Date date : dateList){
+            System.out.println("------------------------------");
+            System.out.println(date);
+        }
+        //涓婂懆
+        List<Date> dateList1 = WeeklyMondayAndSundayFront(now);
+        for (Date date : dateList1){
+            System.out.println("------------------------------");
+            System.out.println(date);
+        }
+        //涓嬪懆
+        List<Date> dateList2 = WeeklyMondayAndSundayAfter(now);
+        for (Date date : dateList2){
+            System.out.println("------------------------------");
+            System.out.println(date);
+        }
+    }
+
+//    public static void main(String[] args) {
+////        Date now = new Date();
+//        LocalDate startDate = LocalDate.of(2024, 3, 27); // 鍋囪寮�濮嬫棩鏈熸槸2022骞�9鏈�5鏃ワ紝鍛ㄤ竴
+//        Date now = Date.from(startDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+//        System.out.println("褰撳墠鏃ユ湡 " + now);
+//
+//        int weeklyNowMonth = WeeklyNowMonth(now);
+//        System.out.println("褰撳墠鏃ユ湡鏄綋鏈堢 " + weeklyNowMonth + " 鍛�");
+//
+//        //鑾峰彇褰撳墠鍛ㄥ懆涓�
+//        Date nowMonday = WeeklyMonday(now);
+//        System.out.println("褰撳墠鏃ユ湡鏄綋鍛ㄥ懆涓�锛�"+nowMonday);
+//
+//        Date daySeven = timeFrontSevenYesterday(nowMonday);
+//        System.out.println("褰撳墠鏃ユ湡鏄笂鍛ㄥ懆涓� " + daySeven);
+//
+//        System.out.println("--------------------------------------------");
+//
+//        WeeklySeven(nowMonday);
+//        System.out.println("--------------------------------------------");
+//
+//        WeeklySeven(daySeven);
+//        System.out.println("--------------------------------------------");
+//
+//    }
+
+//    public static void main(String[] args) {
+////        Date now = new Date();
+////        System.out.println("褰撳墠鏃ユ湡 " + now);
+//
+////        int weeklyNowMonth = WeeklyNowMonth(now);
+////        System.out.println("褰撳墠鏃ユ湡鏄綋鏈堢 " + weeklyNowMonth + " 鍛�");
+////
+////        Date date = timeYesterday(now);
+////        System.out.println("褰撳墠鏃ユ湡鍓嶄竴澶╂棩鏈� " + date);
+////
+////        weeklyNowMonth = WeeklyNowMonth(date);
+////        System.out.println("褰撳墠鏃ユ湡鍓嶄竴澶╂槸褰撴湀绗� " + weeklyNowMonth + " 鍛�");
+////
+//////        System.out.println("--------------------------------------------");
+//////        WeeklySix(now);
+//////        WeeklySix(date);
+////        System.out.println("--------------------------------------------");
+////
+////        WeeklySeven(now);
+////        WeeklySeven(date);
+////        System.out.println("--------------------------------------------");
+////
+////        Date daySeven = timeFrontSevenYesterday(now);
+////        System.out.println("褰撳墠鏃ユ湡鍓嶄竷澶╂棩鏈� " + daySeven);
+////
+////
+////        System.out.println("--------------------------------------------");
+////        WeeklySeven(now);
+////        WeeklySeven(daySeven);
+////        System.out.println("--------------------------------------------");
+//
+//    }
+
 }
diff --git a/src/main/webapp/views/index.html b/src/main/webapp/views/index.html
index 53f1b97..9e437df 100644
--- a/src/main/webapp/views/index.html
+++ b/src/main/webapp/views/index.html
@@ -74,10 +74,10 @@
     <!-- 涓讳綋閮ㄥ垎 -->
     <div class="layui-body"></div>
     <!-- 搴曢儴 -->
-    <div class="layui-footer layui-text">
-        copyright 漏 2022 <a href="http://www.zoneyung.com" target="_blank">娴欐睙涓壃绔嬪簱鎶�鏈湁闄愬叕鍙�</a> all rights reserved.
-        <span class="pull-right">Version 1.0.0</span>
-    </div>
+<!--    <div class="layui-footer layui-text">-->
+<!--        copyright 漏 2022 <a href="http://www.zoneyung.com" target="_blank">娴欐睙涓壃绔嬪簱鎶�鏈湁闄愬叕鍙�</a> all rights reserved.-->
+<!--        <span class="pull-right">Version 1.0.0</span>-->
+<!--    </div>-->
 
 </div>
 

--
Gitblit v1.9.1