package lingtao.net.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.ZoneId; import java.util.Calendar; import java.util.Date; import org.apache.commons.lang.StringUtils; public class DateFormatUtils { // 开始日期 public String formatBeginTime(String add_time_begin) { // 按日期范围统计 if (add_time_begin.length() > 20 && !add_time_begin.contains("~")) { return add_time_begin.substring(0, 10); } // 按周统计 if (add_time_begin.contains("~")) { String[] dates = add_time_begin.split("~"); return dates[0]; } // 按月统计 else if (add_time_begin.length() == 7) { return add_time_begin + "-01"; } // 按季度统计 else if (add_time_begin.length() == 6) { String subYear = add_time_begin.substring(0, 4); if (add_time_begin.contains("-1")) { return subYear + "-01-01"; } else if (add_time_begin.contains("-2")) { return subYear + "-04-01"; } else if (add_time_begin.contains("-3")) { return subYear + "-07-01"; } else { return subYear + "-10-01"; } } // 按年统计 else if (add_time_begin.length() == 4) { return add_time_begin + "-01-01"; } else { // 按日统计 return add_time_begin; } } // 结束日期 public String formatEndTime(String add_time_begin) { // 按日期范围统计 if (add_time_begin.length() > 20 && !add_time_begin.contains("~")) { return add_time_begin.substring(13) + " 23:59:59"; } // 按周统计 if (add_time_begin.contains("~")) { String[] dates = add_time_begin.split("~"); return dates[1]; } // 按月统计 else if (add_time_begin.length() == 7) { return add_time_begin + "-31"; } // 按季度统计 else if (add_time_begin.length() == 6) { String subYear = add_time_begin.substring(0, 4); if (add_time_begin.contains("-1")) { return subYear + "-03-31"; } else if (add_time_begin.contains("-2")) { return subYear + "-06-30"; } else if (add_time_begin.contains("-3")) { return subYear + "-09-30"; } else { return subYear + "-12-31"; } } // 按年统计 else if (add_time_begin.length() == 4) { return add_time_begin + "-12-31"; } else {// 按日统计 if (StringUtils.isEmpty(add_time_begin)) return add_time_begin; return add_time_begin + " 23:59:59"; } } /** * 计算俩个日期间隔的时间 * * @param date1 * @param date2 * @return */ public static long getSubtractiveDays(Date date1, Date date2) { long nano = (Date .from(LocalDateTime.ofInstant(date2.toInstant(), ZoneId.systemDefault()).atZone(ZoneId.systemDefault()) .withHour(0).withMinute(0).withSecond(0).withNano(0).toInstant()) .getTime() - Date.from(LocalDateTime.ofInstant(date1.toInstant(), ZoneId.systemDefault()) .atZone(ZoneId.systemDefault()).withHour(0).withMinute(0).withSecond(0).withNano(0).toInstant()) .getTime()); return nano / (1000 * 3600 * 24); } /** * 计算俩个日期间隔的时间 * * @param date1 * @param date2 * @return */ public static int getDay(Date date1, Date date2) { Calendar cal = Calendar.getInstance(); cal.setTime(date1); long time1 = cal.getTimeInMillis(); cal.setTime(date2); long time2 = cal.getTimeInMillis(); long between_days = (time2 - time1) / (1000 * 3600 * 24); return Integer.parseInt(String.valueOf(between_days)); } /** * 计算俩个日期间隔的时间 * * @param date1 * @param date2 * @return */ public static String getDatePoor(Date endDate, Date nowDate) { long nd = 1000 * 24 * 60 * 60;// 每天毫秒数 long nh = 1000 * 60 * 60;// 每小时毫秒数 long nm = 1000 * 60;// 每分钟毫秒数 long diff = endDate.getTime() - nowDate.getTime(); // 获得两个时间的毫秒时间差异 long day = diff / nd; // 计算差多少天 long hour = diff % nd / nh; // 计算差多少小时 long min = diff % nd % nh / nm; // 计算差多少分钟 return day + "天" + hour + "小时" + min + "分钟"; } /** * 计算俩个日期间隔的时间 * * @param date1 字符串日期 * @param date2 字符串日期 * @return * @throws ParseException */ public static String getDay(String date1, String date2) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date d1 = sdf.parse(date1); Date d2 = sdf.parse(date2); long daysBetween = (long) ((d1.getTime() - d2.getTime()) / (60 * 60 * 24 * 1000)); System.out.println(date1 + " 与 " + date2 + "间隔 " + daysBetween + " 天"); return date1 + " 与 " + date2 + "间隔 " + daysBetween + " 天"; } }