From b4e643e777182223ce9e34d781e8d287be65189c Mon Sep 17 00:00:00 2001 From: LSH Date: 星期二, 26 三月 2024 14:40:27 +0800 Subject: [PATCH] #完善工具类 --- src/main/java/com/zy/crm/manager/utils/TimeCalculatorUtils.java | 196 +++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 191 insertions(+), 5 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..ca9514d 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,30 @@ 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(); + } + + //鑾峰彇鐩稿樊n澶╃殑鏃ユ湡锛堟棩鏈熷ぉ鏁板姞N锛� + public static Date timeYesterdayN(Date date,int day){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.DAY_OF_MONTH, day); return calendar.getTime(); } @@ -138,4 +163,165 @@ } } + //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)); + // 鍒ゆ柇鏄笉鏄懆涓� 鍒欏皢瀹冭皟鏁村埌涓嬪懆鍛ㄤ竴 + localDate = localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY)); + + // 灏哃ocalDate杞崲涓篋ate + Date monday = DateLocalDate(localDate); + + // 鍒欏皢瀹冭皟鏁村埌鏈懆鍛ㄤ竴 + return timeFrontSevenYesterday(monday); + } + + //鑾峰彇褰撳墠鏃ユ湡鎵�鍦ㄧ殑鍛ㄤ竴鍙婂懆鏃ユ椂闂� + 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 List<Date> WeeklyDays(Date date){ + Date nowMonday = WeeklyMonday(date); + List<Date> dateList = new ArrayList<>(); + dateList.add(nowMonday); + for (int i = 1; i<7 ; i++){ + dateList.add(timeYesterdayN(nowMonday,i)); + } + return dateList; + } + + 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); + } + //鍛� + List<Date> dateList3 = WeeklyDays(now); + for (Date date : dateList3){ + System.out.println("------------------------------"); + System.out.println(date); + } + } + } -- Gitblit v1.9.1