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; 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |