From 27e6bc3df3e39e0d0b147b155a89ad6837ea972b Mon Sep 17 00:00:00 2001
From: cjl <909710561@qq.com>
Date: Mon, 06 Jan 2025 09:19:24 +0800
Subject: [PATCH] Merge branch 'cjl' into dev

---
 screen-common/src/main/java/com/moral/util/DateUtils.java |  633 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 586 insertions(+), 47 deletions(-)

diff --git a/screen-common/src/main/java/com/moral/util/DateUtils.java b/screen-common/src/main/java/com/moral/util/DateUtils.java
index 8e61079..cca005b 100644
--- a/screen-common/src/main/java/com/moral/util/DateUtils.java
+++ b/screen-common/src/main/java/com/moral/util/DateUtils.java
@@ -1,6 +1,7 @@
 package com.moral.util;
 
 
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
@@ -13,7 +14,7 @@
 import java.time.ZonedDateTime;
 import java.util.*;
 
-
+@Slf4j
 public class DateUtils {
     /**
      * ������������(yyyy)
@@ -79,11 +80,177 @@
      * ������������(yyyy-MM-dd HH)
      * */
     public static final String yyyy_MM_dd_HH_EN = "yyyy-MM-dd HH";
+    /*
+     * ������������(MM-dd)
+     * */
+    public static final String MM_dd_EN = "MM-dd";
+
+    /*
+     * Date���toString������
+     * */
+    public static final String EEE_MMM_dd_HH_mm_ss_zzz_yyyy = "EEE MMM dd HH:mm:ss zzz yyyy";
     /**
      * DateFormat������
      */
     private static Map<String, DateFormat> dateFormatMap = new HashMap<String, DateFormat>();
 
+
+    /**
+     * @Description: ���������������������������������
+     * @Param: [date]
+     * @return: java.util.Date
+     * @Author: ���������
+     * @Date: 2021/9/26
+     */
+    public static Date getHourlyStartTime(Date date) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.SECOND, 0);
+        cal.set(Calendar.MILLISECOND, 0);
+        return cal.getTime();
+    }
+
+    /**
+     * @Description: ���������������������������������
+     * @Param: [date]
+     * @return: java.util.Date
+     * @Author: ���������
+     * @Date: 2021/9/26
+     */
+    public static Date getHourlyEndTime(Date date) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        cal.set(Calendar.MINUTE, 59);
+        cal.set(Calendar.SECOND, 59);
+        cal.set(Calendar.MILLISECOND, 0);
+        return cal.getTime();
+    }
+
+    /**
+     * @Description: ������������������������������������
+     * @Param: [date]
+     * @return: java.util.List<java.util.Date>
+     * @Author: ���������
+     * @Date: 2021/9/8
+     */
+    public static Date getDailyStartTime(Date date) {
+        String dateStr = dateToDateString(date, "yyyy-MM-dd");
+        String startDateStr = dateStr + " 00:00:00";
+        Date startDate = getDate(startDateStr, "yyyy-MM-dd HH:mm:ss");
+        return startDate;
+    }
+
+    /**
+     * @Description: ���������������������������������������
+     * @Param: [date]
+     * @return: java.util.Date
+     * @Author: ���������
+     * @Date: 2021/9/26
+     */
+    public static Date getDailyEndTime(Date date) {
+        String dateStr = dateToDateString(date, "yyyy-MM-dd");
+        String endDateStr = dateStr + " 23:59:59";
+        Date endDate = getDate(endDateStr, "yyyy-MM-dd HH:mm:ss");
+        return endDate;
+    }
+
+
+    /**
+     * @Description: ���������������������������������������������������
+     * @Param: [date]
+     * @return: java.util.Date
+     * @Author: ���������
+     * @Date: 2021/9/26
+     */
+    public static Date getWeeklyStartTime(Date date) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        if (1 == cal.get(Calendar.DAY_OF_WEEK)) {
+            cal.add(Calendar.DAY_OF_MONTH, -1);
+        }
+        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.SECOND, 0);
+        cal.set(Calendar.MILLISECOND, 0);
+        return cal.getTime();
+    }
+
+    /**
+     * @Description: ���������������������������������������������������������
+     * @Param: [date]
+     * @return: java.util.Date
+     * @Author: ���������
+     * @Date: 2021/9/26
+     */
+    public static Date getWeeklyEndTime(Date date) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        if (1 != cal.get(Calendar.DAY_OF_WEEK)) {
+            cal.add(Calendar.DAY_OF_MONTH, 7);
+        }
+        cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+        cal.set(Calendar.HOUR_OF_DAY, 23);
+        cal.set(Calendar.MINUTE, 59);
+        cal.set(Calendar.SECOND, 59);
+        cal.set(Calendar.MILLISECOND, 0);
+        return cal.getTime();
+    }
+
+    /**
+     * @Description: ���������������������������������������������������
+     * @Param: [date]
+     * @return: java.util.Date
+     * @Author: ���������
+     * @Date: 2021/9/26
+     */
+    public static Date getMonthlyStartTime(Date date) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.SECOND, 0);
+        cal.set(Calendar.MILLISECOND, 0);
+        return cal.getTime();
+    }
+
+    /**
+     * @Description: ���������������������������������������������������������
+     * @Param: [date]
+     * @return: java.util.Date
+     * @Author: ���������
+     * @Date: 2021/9/26
+     */
+    public static Date getMonthlyEndTime(Date date) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
+        cal.set(Calendar.HOUR_OF_DAY, 23);
+        cal.set(Calendar.MINUTE, 59);
+        cal.set(Calendar.SECOND, 59);
+        cal.set(Calendar.MILLISECOND, 0);
+        return cal.getTime();
+    }
+
+
+    /**
+     * @Description: Date���toString������������Date
+     * @Param: []
+     * @return: java.util.Date
+     * @Author: ���������
+     * @Date: 2021/8/25
+     */
+    public static Date dateStringToDate(String formatStr) {
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat(EEE_MMM_dd_HH_mm_ss_zzz_yyyy, Locale.US);
+            return sdf.parse(formatStr);
+        } catch (ParseException e) {
+            log.error(e.getMessage());
+            return null;
+        }
+    }
 
     /**
      * ������DateFormat
@@ -124,7 +291,7 @@
     }
 
     /**
-     * ������dateTimeStr���Date������
+     * ������dateTimeStr���Date������ ������������
      *
      * @param dateTimeStr
      * @return
@@ -275,7 +442,7 @@
     }
 
     /**
-     * ������������"yyyy-MM-dd HH:mm:ss"������������������������������������������,time2-time1
+     * ������������"yyyy-MM-dd"������������������������������������������,time2-time1
      *
      * @param time1
      * @param time2
@@ -286,6 +453,20 @@
         Date d2 = getDate(time2);
         return d2.getTime() - d1.getTime();
     }
+
+    /**
+     * ������������"yyyy-MM-dd HH:mm:ss"������������������������������������������,time2-time1
+     *
+     * @param time1
+     * @param time2
+     * @return
+     */
+    public static long compareDateStrDay(String time1, String time2) {
+        Date d1 = getDate(time1,DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
+        Date d2 = getDate(time2,DateUtils.yyyy_MM_dd_HH_mm_ss_EN);
+        return d2.getTime() - d1.getTime();
+    }
+
 
     /**
      * ���������������������������������������
@@ -340,6 +521,14 @@
         }
     }
 
+    public static boolean isTimeBeforE(Date nows, Date date) {
+        long hous = nows.getTime() - date.getTime();
+        if (hous >= 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
     /**
      * ������������������������������������������������������
      *
@@ -439,6 +628,7 @@
         return dateToDateString(now.getTime(), formatStr);
     }
 
+
     /**
      * ������������������day���������������(formatStr)������������
      *
@@ -452,6 +642,22 @@
         now.setTime(getDate(date, formatStr));
         now.add(Calendar.DATE, day);
         return dateToDateString(now.getTime(), formatStr);
+    }
+
+
+    /**
+     * ������������������day���������������(formatStr)������������
+     *
+     * @param date
+     * @param date,
+     * @param hours
+     * @return
+     */
+    public static Date getDateAddHour(Date date,int hours) {
+        Calendar now = Calendar.getInstance(TimeZone.getDefault());
+        now.setTime(date);
+        now.add(Calendar.HOUR_OF_DAY, hours);
+        return now.getTime();
     }
 
     /**
@@ -486,6 +692,8 @@
         }
         return new Date();
     }
+
+
 
     public static String getAfterNDays(Date date, int n, String formateStr) {
         SimpleDateFormat sdf = new SimpleDateFormat(formateStr);
@@ -775,6 +983,97 @@
         return getDate(dateToDateString(cal.getTime(), yyyy_MM_dd_EN));
     }
 
+    /*
+     * ������������������������
+     * */
+    public static Date getFirstDayOfCurrYear() {
+        Calendar cal = Calendar.getInstance();
+        cal.set(Calendar.DAY_OF_YEAR, 1);
+        return getDate(dateToDateString(cal.getTime(), yyyy_MM_dd_EN));
+    }
+
+    /*
+     * ������������������������������
+     * */
+    public static Date getFirstDayOfYear(Date date) {
+        final Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        final int last = cal.getActualMinimum(Calendar.DAY_OF_YEAR);
+        cal.set(Calendar.DAY_OF_YEAR, last);
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.SECOND, 0);
+        return cal.getTime();
+    }
+
+    /*
+     * ���������������������������������
+     * */
+    public static Date getLastDayOfYear(Date date) {
+        final Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        final int last = cal.getActualMaximum(Calendar.DAY_OF_YEAR);
+        cal.set(Calendar.DAY_OF_YEAR, last);
+        cal.set(Calendar.HOUR_OF_DAY, 23);
+        cal.set(Calendar.MINUTE, 59);
+        cal.set(Calendar.SECOND, 59);
+        return cal.getTime();
+    }
+
+    /*
+     * ���������������������������������
+     * */
+    public static Date getFirstDayOfMonth(Date date) {
+        final Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        final int last = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
+        cal.set(Calendar.DAY_OF_MONTH, last);
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.SECOND, 0);
+        return cal.getTime();
+    }
+
+    /*
+     * ������������������������������������
+     * */
+    public static Date getLastDayOfMonth(Date date) {
+        final Calendar cal = Calendar.getInstance();
+        cal.setTime(date);
+        final int last = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
+        cal.set(Calendar.DAY_OF_MONTH, last);
+        cal.set(Calendar.HOUR_OF_DAY, 23);
+        cal.set(Calendar.MINUTE, 59);
+        cal.set(Calendar.SECOND, 59);
+        return cal.getTime();
+    }
+
+
+    /*
+     * ���������������������������
+     * */
+    public static boolean isCurrentYear(Date date) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(new Date());
+        int currentYear = cal.get(Calendar.YEAR);
+        cal.setTime(date);
+        int year = cal.get(Calendar.YEAR);
+        return year == currentYear;
+    }
+
+    /*
+     * ���������������������������
+     * */
+    public static boolean isCurrentMonth(Date date) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(new Date());
+        int currentYear = cal.get(Calendar.MONTH);
+        cal.setTime(date);
+        int year = cal.get(Calendar.MONTH);
+        return year == currentYear;
+    }
+
+
     /**
      * ������������������������������
      *
@@ -782,6 +1081,14 @@
      */
     public static Date getLastDayOfCurrMonth() {
         Calendar cal = Calendar.getInstance();
+        cal.add(Calendar.MONTH, 1);
+        cal.set(Calendar.DAY_OF_MONTH, 0);
+        return getDate(dateToDateString(cal.getTime(), yyyy_MM_dd_EN));
+    }
+
+    public static Date getLastDayOfCurrMonth(Date time) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(time);
         cal.add(Calendar.MONTH, 1);
         cal.set(Calendar.DAY_OF_MONTH, 0);
         return getDate(dateToDateString(cal.getTime(), yyyy_MM_dd_EN));
@@ -808,50 +1115,6 @@
     }
 
     /**
-     * ������������������������������
-     *
-     * @param year
-     * @param month
-     * @return
-     */
-    public static String getFirstDayOfMonth(int year, int month) {
-        Calendar cal = Calendar.getInstance();
-        // ������������
-        cal.set(Calendar.YEAR, year);
-        // ������������
-        cal.set(Calendar.MONTH, month - 1);
-        // ������������������������
-        int lastDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);
-        // ������������������������������������
-        cal.set(Calendar.DAY_OF_MONTH, lastDay);
-        // ���������������
-        DateFormat df = getDateFormat(yyyy_MM_dd_EN);
-        return df.format(cal.getTime());
-    }
-
-    /**
-     * ������������������������������
-     *
-     * @param year
-     * @param month
-     * @return
-     */
-    public static String getLastDayOfMonth(int year, int month) {
-        Calendar cal = Calendar.getInstance();
-        // ������������
-        cal.set(Calendar.YEAR, year);
-        // ������������
-        cal.set(Calendar.MONTH, month - 1);
-        // ������������������������
-        int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
-        // ������������������������������������
-        cal.set(Calendar.DAY_OF_MONTH, lastDay);
-        // ���������������
-        DateFormat df = getDateFormat(yyyy_MM_dd_EN);
-        return df.format(cal.getTime());
-    }
-
-    /**
      * ������������������
      *
      * @param date
@@ -866,6 +1129,18 @@
         return df.format(calendar.getTime());
     }
 
+    /*
+     * ������������Date
+     * */
+    public static Date getYesterdayDate() {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(new Date());
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.SECOND, 0);
+        cal.add(Calendar.DAY_OF_MONTH, -1);
+        return cal.getTime();
+    }
 
     /**
      * 10���������������������
@@ -952,6 +1227,7 @@
         todayStart.set(Calendar.MILLISECOND, 0);
         return todayStart.getTime().getTime();
     }
+
 
     public static Integer getTodayInt() {
         return (int) (getTodayTime() / 1000);
@@ -1220,6 +1496,14 @@
         return calendar.getTime();
     }
 
+    //������������
+    public static Date addYears(Date date, int years) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.YEAR, years);
+        return calendar.getTime();
+    }
+
     /**
      * <p>
      * Title: getDays
@@ -1239,6 +1523,170 @@
         days = (int) ((maxDate.getTime() - minDate.getTime()) / (24 * 60 * 60 * 1000));
         return days;
     }
+
+    /**
+     * @Description: ���������������������������������
+     * @Param: [start, end]
+     * @return: int
+     * @Author: ���������
+     * @Date: 2021/9/23
+     */
+    public static int getMonth(Date start, Date end) {
+        if (start.after(end)) {
+            Date t = start;
+            start = end;
+            end = t;
+        }
+        Calendar startCalendar = Calendar.getInstance();
+        startCalendar.setTime(start);
+        Calendar endCalendar = Calendar.getInstance();
+        endCalendar.setTime(end);
+        Calendar temp = Calendar.getInstance();
+        temp.setTime(end);
+        temp.add(Calendar.DATE, 1);
+
+        int year = endCalendar.get(Calendar.YEAR)
+                - startCalendar.get(Calendar.YEAR);
+        int month = endCalendar.get(Calendar.MONTH)
+                - startCalendar.get(Calendar.MONTH);
+
+        if ((startCalendar.get(Calendar.DATE) == 1)
+                && (temp.get(Calendar.DATE) == 1)) {
+            return year * 12 + month + 1;
+        } else if ((startCalendar.get(Calendar.DATE) != 1)
+                && (temp.get(Calendar.DATE) == 1)) {
+            return year * 12 + month;
+        } else if ((startCalendar.get(Calendar.DATE) == 1)
+                && (temp.get(Calendar.DATE) != 1)) {
+            return year * 12 + month;
+        } else {
+            return (year * 12 + month - 1) < 0 ? 0 : (year * 12 + month);
+        }
+    }
+
+    /**
+     * @Description: ���������������������������������������
+     * @Param: [start, end]
+     * @return: java.util.List<java.lang.String>
+     * @Author: ���������
+     * @Date: 2021/9/23
+     */
+    public static List<String> getAllMonth(Date start, Date end) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(start);
+        // ���������������������������������
+        int startYear = calendar.get(Calendar.YEAR);
+        int startMonth = calendar.get(Calendar.MONTH);
+        // ���������������������������������
+        calendar.setTime(end);
+        int endYear = calendar.get(Calendar.YEAR);
+        int endMonth = calendar.get(Calendar.MONTH);
+        //
+        List<String> list = new ArrayList<String>();
+
+        for (int i = startYear; i <= endYear; i++) {
+            String date = "";
+            if (startYear == endYear) {
+                for (int j = startMonth; j <= endMonth; j++) {
+                    if (j < 9) {
+                        date = i + "-0" + (j + 1);
+                    } else {
+                        date = i + "-" + (j + 1);
+                    }
+                    list.add(date);
+                }
+
+            } else {
+                if (i == startYear) {
+                    for (int j = startMonth; j < 12; j++) {
+                        if (j < 9) {
+                            date = i + "-0" + (j + 1);
+                        } else {
+                            date = i + "-" + (j + 1);
+                        }
+                        list.add(date);
+                    }
+                } else if (i == endYear) {
+                    for (int j = 0; j <= endMonth; j++) {
+                        if (j < 9) {
+                            date = i + "-0" + (j + 1);
+                        } else {
+                            date = i + "-" + (j + 1);
+                        }
+                        list.add(date);
+                    }
+                } else {
+                    for (int j = 0; j < 12; j++) {
+                        if (j < 9) {
+                            date = i + "-0" + (j + 1);
+                        } else {
+                            date = i + "-" + (j + 1);
+                        }
+                        list.add(date);
+                    }
+                }
+
+            }
+
+        }
+
+        return list;
+    }
+
+    /**
+     * @Description: ���������������������������������������
+     * @Param: [start, end]
+     * @return: java.util.List<java.lang.String>
+     * @Author: ���������
+     * @Date: 2021/9/23
+     */
+    public static List<String> getAllYear(Date start, Date end) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(start);
+        int startYear = calendar.get(Calendar.YEAR);
+        calendar.setTime(end);
+        int endYear = calendar.get(Calendar.YEAR);
+
+        List<String> list = new ArrayList<>();
+        list.add(String.valueOf(startYear));
+
+        int i = endYear - startYear;
+
+        for (int j = 1; j < i + 1; j++) {
+            list.add(String.valueOf(startYear + j));
+        }
+
+        return list;
+    }
+
+    public static List<String> getAllDays(Date start, Date end) {
+        List<String> list = new ArrayList<String>();
+        SimpleDateFormat outformat = new SimpleDateFormat("yyyy-MM-dd");
+
+        Calendar sCalendar = Calendar.getInstance();
+        sCalendar.setTime(start);
+        int year = sCalendar.get(Calendar.YEAR);
+        int month = sCalendar.get(Calendar.MONTH);
+        int day = sCalendar.get(Calendar.DATE);
+        sCalendar.set(year, month, day, 0, 0, 0);
+
+        Calendar eCalendar = Calendar.getInstance();
+        eCalendar.setTime(end);
+        year = eCalendar.get(Calendar.YEAR);
+        month = eCalendar.get(Calendar.MONTH);
+        day = eCalendar.get(Calendar.DATE);
+        eCalendar.set(year, month, day, 0, 0, 0);
+
+        while (sCalendar.before(eCalendar)) {
+            list.add(outformat.format(sCalendar.getTime()));
+            sCalendar.add(Calendar.DAY_OF_YEAR, 1);
+        }
+        list.add(outformat.format(eCalendar.getTime()));
+
+        return list;
+
+    }
+
 
     /**
      * ������������ date
@@ -1355,4 +1803,95 @@
         }
         return date;
     }
+
+    /*
+     * ������������������������������������
+     * ������time=2021-08-04 ���������������������������������������2021-08-04 00���2021-08-04 01���������
+     *    time=2021-08 ���������������������������������
+     * */
+    public static List<String> getTimeLag(String time) {
+        List<String> result = new ArrayList<>();
+        int length = time.length();
+        Calendar cal = Calendar.getInstance();
+        String end;
+        String dateFormat;
+        String df;
+        int i;
+        if (length == 10) {//���
+            end = getDateAddDay(time, 1);
+            dateFormat = yyyy_MM_dd_HH_EN;
+            df = yyyy_MM_dd_EN;
+            i = Calendar.HOUR_OF_DAY;
+        } else if (length == 7) {//���
+            end = getDateAddMonth(time, 1);
+            dateFormat = yyyy_MM_dd_EN;
+            df = yyyy_MM_EN;
+            i = Calendar.DAY_OF_MONTH;
+        } else {//���
+            end = getDateAddYear(time, 1);
+            dateFormat = yyyy_MM_EN;
+            df = yyyy;
+            i = Calendar.MONTH;
+        }
+        cal.setTime(getDate(time, df));
+        for (long d = cal.getTimeInMillis(); d < getDate(end, df).getTime(); cal.set(i, cal.get(i) + 1), d = cal.getTimeInMillis()) {
+            String format = dateToDateString(new Date(d), dateFormat);
+            result.add(format);
+        }
+        return result;
+    }
+
+    //������date���������������������������0���5���������������������2021-08-09 15:32:00->2021-08-09 15:30:00���2021-08-09 15:39:00->2021-08-09 15:35:00
+    public static Date getFiveMinuteDate(Date date) {
+        String dateString = dateToDateString(date, yyyy_MM_dd_HH_mm_EN);
+        String minute = dateString.substring(15, 16);
+        int i = Integer.parseInt(minute);
+        if (i > 0 && i < 5) {
+            i = 0;
+        } else if (i > 5 && i <= 9) {
+            i = 5;
+        }
+        StringBuilder stringBuffer = new StringBuilder(dateString);
+        stringBuffer.replace(15, 16, String.valueOf(i));
+        return getDate(stringBuffer.toString(), yyyy_MM_dd_HH_mm_EN);
+    }
+
+    //������������������hours���������������
+    public static Date addHours(Date date, int hours) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.HOUR_OF_DAY, hours);
+        return calendar.getTime();
+    }
+
+    //������������Date
+    public static Date getFirstDayOfLastYear() {
+        String lastYear = getDateAddYear(DateUtils.dateToDateString(getDate(), DateUtils.yyyy), -1);
+        return DateUtils.getDate(lastYear, DateUtils.yyyy);
+    }
+    //������������������
+    public static Date getFirstDayOfLastYear(Date date) {
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTime(date);
+        calendar.add(Calendar.YEAR, -1);
+        return calendar.getTime();
+    }
+
+    //���������������������������������������������������
+    public static Map<Date, List<Integer>> getBeforeAndAfterHourDate(Date date) {
+        String s = dateToDateString(date, yyyy_MM_dd_EN);
+        List<String> timeLag = getTimeLag(s);
+        Map<Date, List<Integer>> result = new HashMap<>();
+        for (String s1 : timeLag) {
+            List<Integer> objects = new ArrayList<>();
+            Date current = getDate(s1, yyyy_MM_dd_HH_EN);
+            Date before = addHours(current, -1);
+            Date after = addHours(current, 1);
+            objects.add(getHour(before));
+            objects.add(getHour(current));
+            objects.add(getHour(after));
+            result.put(current, objects);
+        }
+        return result;
+    }
 }

--
Gitblit v1.8.0