package org.jeecg.modules.mdc.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.TimeZone; /** * Created by bigshow on 2015/9/14. */ public class TimeFieldUtils { private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 全局显示定义最省事安全 /** * 指定日期的上一天 * * @param date * @return */ public static Date theLastDay(Date date) { if (date == null) { return null; } Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA); cal.get(Calendar.HOUR_OF_DAY); cal.setTime(date); cal.add(Calendar.DATE, -1); cal.set(Calendar.HOUR, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); return cal.getTime(); } /** * 指定日期的上一天 * * @param dateStr * @return */ public static Date theLastDay(String dateStr) { if (dateStr == null || dateStr.length() < 7) { return null; } try { Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA); cal.get(Calendar.HOUR_OF_DAY); cal.setTime(sdf.parse(dateStr + " 00:00:00")); cal.add(Calendar.DATE, -1); cal.set(Calendar.HOUR, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); return cal.getTime(); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 指定日期的下一天 * * @param date * @return */ public static Date theNextDay(Date date) { if (date == null) { return null; } Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA); cal.get(Calendar.HOUR_OF_DAY); cal.setTime(date); cal.add(Calendar.DATE, 1); cal.set(Calendar.HOUR, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); return cal.getTime(); } /** * 指定日期的下一天 * * @param dateStr * @return */ public static Date theNextDay(String dateStr) { if (dateStr == null || dateStr.length() < 7) { return null; } try { Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA); cal.get(Calendar.HOUR_OF_DAY); cal.setTime(sdf.parse(dateStr + " 00:00:00")); cal.add(Calendar.DATE, 1); cal.set(Calendar.HOUR, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); return cal.getTime(); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 判断两个日期是否同一天 * * @param d1 * @param d2 * @return */ public static boolean isEquals(Date d1, Date d2) { Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA); cal1.get(Calendar.HOUR_OF_DAY); cal1.setTime(d1); cal1.get(Calendar.HOUR_OF_DAY); Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA); cal2.get(Calendar.HOUR_OF_DAY); cal2.setTime(d2); cal2.get(Calendar.HOUR_OF_DAY); if (cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH) && cal1.get(Calendar.DATE) == cal2.get(Calendar.DATE)) { return true; } return false; } /** * 指定日期的最大时间 * * @param date * @return */ public static Date theDayMaxTime(Date date) { if (date == null) { return null; } Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA); cal.get(Calendar.HOUR_OF_DAY); cal.setTime(date); //cal.add(Calendar.DATE, 1); //cal.set(Calendar.HOUR, 0); //cal.set(Calendar.MINUTE, 0); //cal.set(Calendar.SECOND, 0); String maxTime = cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" + cal.get(Calendar.DATE) + " 23:59:59"; try { return sdf.parse(maxTime); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 指定日期的最小时间 * * @param date * @return */ public static Date theDayMiniTime(Date date) { if (date == null) { return null; } Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA); cal.get(Calendar.HOUR_OF_DAY); cal.setTime(date); cal.set(Calendar.HOUR, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); return cal.getTime(); } /** * 计算两个时间间隔长度,单位秒 * * @param lessTime * @param moreTime * @return */ public static long duration(Date lessTime, Date moreTime) { Calendar lCal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA); lCal.get(Calendar.HOUR_OF_DAY); lCal.setTime(lessTime); Calendar mCal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA); lCal.get(Calendar.HOUR_OF_DAY); mCal.setTime(moreTime); long between = Math.round((mCal.getTime().getTime() - lCal.getTime().getTime()) / 1000.0);//转换成秒 return between; } /** * 计算同一天 两个时间间隔长度,单位秒 * * @param startStr * @param endStr * @return */ public static long durationOneDay(String startStr, String endStr,String isDaySpan) { String[] strartArray = startStr.split(":"); String[] endArray = endStr.split(":"); Calendar start = Calendar.getInstance(); Calendar end = Calendar.getInstance(); start.set(Calendar.HOUR_OF_DAY,Integer.parseInt(strartArray[0])); start.set(Calendar.MINUTE,Integer.parseInt(strartArray[1])); start.set(Calendar.SECOND,Integer.parseInt(strartArray[2])); end.set(Calendar.HOUR_OF_DAY,Integer.parseInt(endArray[0])); end.set(Calendar.MINUTE,Integer.parseInt(endArray[1])); end.set(Calendar.SECOND,Integer.parseInt(endArray[2])); if("true".equals(isDaySpan)){ end.add(Calendar.DAY_OF_YEAR,1); } return duration(start.getTime(),end.getTime()); } }