| package com.zy.crm.manager.utils; | 
|   | 
| import java.time.LocalDate; | 
| import java.time.LocalTime; | 
| import java.time.format.DateTimeFormatter; | 
| import java.time.temporal.ChronoUnit; | 
| import java.util.Calendar; | 
| import java.util.Date; | 
| import java.util.TimeZone; | 
|   | 
| public class TimeCalculatorUtils { | 
|   | 
|     //获取当前时间的小时数(24小时制): | 
|     public static int nowTimeHour(){ | 
|         // 获取当前时间戳 | 
|         long timestamp = System.currentTimeMillis(); | 
|   | 
|         // 创建Date对象,并设置时间戳 | 
|         Date date = new Date(timestamp); | 
|   | 
|         // 创建TimeZone对象,设置为中国北京时间 | 
|         TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); | 
|   | 
|         // 创建Calendar对象,并设置时区 | 
|         // 注意:Calendar类中的月份是从0开始的,所以需要减去1 | 
|         java.util.Calendar calendar = java.util.Calendar.getInstance(timeZone); | 
|         calendar.setTime(date); | 
|   | 
|         // 获取当前小时数(24小时制) | 
|         return calendar.get(java.util.Calendar.HOUR_OF_DAY); | 
|     } | 
|   | 
|     //获取当天小时数(24小时制)中国北京时间: | 
|     public static int timeTimeHour(Date date){ | 
|         // 创建TimeZone对象,设置为中国北京时间 | 
|         TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); | 
|   | 
|         // 创建Calendar对象,并设置时区 | 
|         // 注意:Calendar类中的月份是从0开始的,所以需要减去1 | 
|         java.util.Calendar calendar = java.util.Calendar.getInstance(timeZone); | 
|         calendar.setTime(date); | 
|   | 
|         // 获取当前小时数(24小时制) | 
|         return calendar.get(java.util.Calendar.HOUR_OF_DAY); | 
|     } | 
|   | 
|     //获取前一天的日期(日期天数减一) | 
|     public static Date timeYesterday(Date date){ | 
|         Calendar calendar = Calendar.getInstance(); | 
|         calendar.setTime(date); | 
|         calendar.add(Calendar.DAY_OF_MONTH, -1); | 
|         return calendar.getTime(); | 
|     } | 
|   | 
|     //获取年月日 | 
|     public static String timeYestMonthDay(Date date){ | 
|         Calendar calendar = Calendar.getInstance(); | 
|         calendar.setTime(date); | 
|   | 
|         int year = calendar.get(Calendar.YEAR); | 
|         int month = calendar.get(Calendar.MONTH) + 1;  // 月份从0开始,需要加1 | 
|         int day = calendar.get(Calendar.DAY_OF_MONTH); | 
|         return year+"年"+month+"月"+day+"日"; | 
|     } | 
|   | 
|     //获取年 | 
|     public static int timeYest(Date date){ | 
|         Calendar calendar = Calendar.getInstance(); | 
|         calendar.setTime(date); | 
|   | 
|         return calendar.get(Calendar.YEAR); | 
|     } | 
|   | 
|     //获取月 | 
|     public static int timeMonth(Date date){ | 
|         Calendar calendar = Calendar.getInstance(); | 
|         calendar.setTime(date); | 
|   | 
|         return calendar.get(Calendar.MONTH) + 1; | 
|     } | 
|   | 
|     //获取日 | 
|     public static int timeDay(Date date){ | 
|         Calendar calendar = Calendar.getInstance(); | 
|         calendar.setTime(date); | 
|   | 
|         return calendar.get(Calendar.DAY_OF_MONTH); | 
|     } | 
|     //获取年差异 | 
|     public static int DifferenceYest(Date startDay,Date endDay){ | 
|         int startYest = timeYest(startDay); | 
|         int endYest = timeYest(endDay); | 
|         return endYest-startYest; | 
|     } | 
|     //获取月差异 | 
|     public static int DifferenceMonth(Date startDay,Date endDay){ | 
|         int startMonth = timeMonth(startDay); | 
|         int endMonth = timeMonth(endDay); | 
|         return endMonth-startMonth; | 
|     } | 
|     //获取天差异 | 
|     public static int DifferenceDayInt(Date startDay,Date endDay){ | 
|         return DifferenceDayLong(startDay,endDay).intValue(); | 
|     } | 
|     //获取天差异 | 
|     public static Long DifferenceDayLong(Date startDay,Date endDay){ | 
|   | 
|         LocalDate a = LocalDate.of(timeYest(startDay), timeMonth(startDay), timeDay(startDay)); | 
|         LocalDate b = LocalDate.of(timeYest(endDay), timeMonth(endDay), timeDay(endDay)); | 
|   | 
|         return ChronoUnit.DAYS.between(a, b)+1; | 
|     } | 
|     //获取天差异 | 
|     public static Double DifferenceDayMorningAfternoon(Date startDay,Date endDay,int startTime,int endTime){ | 
|         double between = DifferenceDayLong(startDay, endDay).doubleValue(); | 
|         if (startTime==2){ | 
|             between = between-0.5; | 
|         } | 
|         if (endTime == 1){ | 
|             between = between-0.5; | 
|         } | 
|         return between; | 
|     } | 
|   | 
|     public static boolean CompareData(Date startDay,Date endDay){ | 
|   | 
|         // 将日期字符串解析为LocalDate对象 | 
|         LocalDate a = LocalDate.of(timeYest(startDay), timeMonth(startDay), timeDay(startDay)); | 
|         LocalDate b = LocalDate.of(timeYest(endDay), timeMonth(endDay), timeDay(endDay)); | 
|   | 
|         // 比较日期 | 
|         if (a.isAfter(b)) { | 
|             return false; | 
|         } else if (a.isBefore(b)) { | 
|             return true; | 
|         } else { | 
|             return true; | 
|         } | 
|     } | 
|   | 
| } |