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