个人工具类 -- DataUtile

mac2024-06-04  60

个人工具类 – DataUtile日期类

上代码

public class DateUtil extends org.apache.commons.lang3.time.DateUtils { private static Logger logger = LoggerFactory.getLogger(DateUtil.class); /** oracle 类型的24小时制时分秒 */ public static final String ORACLE_DATE_TIME_24_PATTERN = "yyyy-mm-dd hh24:mi:ss"; public static final String DATE_TIME_24_PATTERN_SIMPLE = "yyyyMMddHHmmss"; /** 格式完整的日期时分秒 */ public static final String DATE_TIME_FULL_PATTERN = "yyyy-MM-dd HH:mm:ss"; public static final String DATE_TIME_FULL_SIMPLE = "yyyy-MM-dd HH:mm"; /** 格式日期 时分 */ public static final String DATE_HM_TIME_PATTERN = "HH:mm"; public static final String DATE_TIME_YEAR_MONTH_DAY = "yyyy年MM月dd日"; public static final String DATE_TIME_YEAR_MONTH_DAY_HM = "yyyy年MM月dd日 HH:mm"; /** 日期格式到天 */ public static final String DATE_TIME_DAY = "yyyy-MM-dd"; /** 只得到时间,不要年月日 */ public static final String DATE_TIME_TIME = "HH:mm:ss"; /** 日期格式不带中横杠 */ public static final String DATE_TIME_DAY_SIMPLE = "yyyyMMdd"; /** 日期格式不带中横杠 年月格式 */ public static final String DATE_TIME_DAY_SIMPLE_NO_DAY = "yyyyMM"; /** 时间格式 */ public static final String DATE_TIME_TERM = "HH.mm.ss"; public static final String DATE_TIME_CHINESE = "MM月dd日HH时mm分"; public static final int C_ONE_SECOND = 1000; public static final int C_ONE_MINUTE = 60 * C_ONE_SECOND; public static final long C_ONE_HOUR = (long) 60 * C_ONE_MINUTE; public static final long C_ONE_DAY = (long) 24 * C_ONE_HOUR; public static final String DAY_ENDTIME = "235959"; /** * 获取指定年和月份的最后一天 * * @param year * @param month * @return lastDayOfMonth = 2019-10-31 */ public static String getLastDayOfMonth(int year, int month) { Calendar cal = Calendar.getInstance(); // 设置年份 cal.set(Calendar.YEAR, year); // 设置月份 cal.set(Calendar.MONTH, month - 1); // 获取某月最大天数 int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); // 设置日历中月份的最大天数 cal.set(Calendar.DAY_OF_MONTH, lastDay); // 格式化日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String lastDayOfMonth = sdf.format(cal.getTime()); return lastDayOfMonth; } /** * 根据传入的字符串时间格式成yyyy-MM-dd * * @param date * @return yyyy-MM-dd */ public static String formatStringDate(String date) { if (date == null) return null; return date.substring(0, 4) + "-" + date.substring(4, 6) + "-" + date.substring(6, 8); } /** * 根据传入的字符串时间格式成yyyyMMdd * * @param date * @return yyyyMMdd */ public static String StringDate(String date) { if (date == null) return null; return date.substring(0, 4) + date.substring(5, 7) + date.substring(8, 10); } /** * 获取当前时间yyyyMMddHHmmss */ public static String getCurrentTime() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); return simpleDateFormat.format(new Date()); } /** * 获取当前时间yyyyMMddHHmmss */ public static String getCurrentTime(Date date) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); return simpleDateFormat.format(date); } /** * 获取当前时间 的年月日yyyy-MM-dd * * @return yyyy-MM-dd */ public static String getCurrentDateyyyyMMdd() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); return simpleDateFormat.format(new Date()); } /** * 获取当前时间 的年月日yyyy-MM-dd * * @return yyyy-MM-dd */ public static String getCurrentDateyyyyMMdd(Date date) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); return simpleDateFormat.format(date); } /** * 获取当前时间 的 时分秒 * * @return */ public static String getCurrentTimeHHmmss() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HHmmss"); return simpleDateFormat.format(new Date()); } /** * Date型的时间转换成String型的格式为:yyyyMMdd * * @return */ public static String getCurrentDateStr() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); return simpleDateFormat.format(new Date()); } /** * 返回指定日期格式的字符串 如:yyyyMMdd,yyyyMMddhhmmss * * @param format * @return yyyyMMdd,yyyyMMddhhmmss */ public static String getCurrentDateFormatStr(String format) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); return simpleDateFormat.format(new Date()); } /** * Date型的时间转换成String型的格式为:yyyy-MM-dd * * @return yyyy-MM-dd */ public static String getStringDate() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); return simpleDateFormat.format(new Date()); } /** * 获取当前日期 */ public static Date getCurrentDate() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd"); String curDate = simpleDateFormat.format(new Date()); try { return simpleDateFormat.parse(curDate); } catch (ParseException e) { logger.error(e.getMessage()); } return null; } /** * 获得当前日期和时间 * * @return */ public static Date getCurrentDateAndTime() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd HH:mm:ss"); String curDate = simpleDateFormat.format(new Date()); try { return simpleDateFormat.parse(curDate); } catch (ParseException e) { logger.error(e.getMessage()); } return null; } /** * 获取格式后的数据 ,返回yyyyMMdd */ public static String getFormatTime(String Date) { if (null == Date) { return Date; } if (Date.equals("")) { return ""; } StringBuffer strBuf = new StringBuffer(); strBuf.append(Date.substring(0, 4)); strBuf.append(Date.substring(5, 7)); strBuf.append(Date.substring(8, 10)); return strBuf.toString(); } public static String dbFormatToDateFormat(String dbFormat) { if (dbFormat != null && !"".equals(dbFormat) && dbFormat.trim().length() >= 8) { StringBuffer strBuf = new StringBuffer(dbFormat.substring(0, 4)); strBuf.append("-"); strBuf.append(dbFormat.substring(4, 6)); strBuf.append("-"); strBuf.append(dbFormat.substring(6, 8)); strBuf.append(dbFormat.substring(8)); return strBuf.toString(); } return dbFormat; } /** * Date日期转换成String */ public static final String date2String(Date date) { if (date == null) { return ""; } DateFormat df = new SimpleDateFormat("yyyyMMdd"); return df.format(date); } /** * Date日期转换成String */ public static final String date2String(Date date, String format) { if (date == null) { return ""; } DateFormat df = new SimpleDateFormat(format); return df.format(date); } /*** * Date日期转成带-String */ public static final String dateToSting_(Date date) { if (date == null) { return ""; } DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); return df.format(date); } /** * String日期转换成Date */ public static final Date string2date(String dateStr) { if (dateStr == null || dateStr.length() == 0) return null; DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { return df.parse(dateStr); } catch (ParseException e) { logger.error(e.getMessage()); return null; } } /** * String日期转换成Date(yyyy-MM-dd-HH.mm.ss.S) * * @throws ParseException */ public static final Date string2Datetime(String dateStr) throws ParseException { if (dateStr == null || dateStr.length() == 0) return null; DateFormat df = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.S"); return df.parse(dateStr); } /** * String转换成Date */ public static final Timestamp string2timestamp(String dateStr) { Date date; try { date = string2Datetime(dateStr); if (null != date) { return new Timestamp(date.getTime()); } else { return null; } } catch (ParseException e) { logger.error("string2timestamp 日期转换出问题", e.getMessage()); throw new BizFailException("string2timestamp 日期转换出问题:" + e); } } /** * String日期转换成Date(yyyymmdd) */ public static final Date string2Dateyyyymmdd(String dateStr) { if (dateStr == null || dateStr.length() == 0) return null; DateFormat df = new SimpleDateFormat("yyyyMMdd"); try { return df.parse(dateStr); } catch (ParseException e) { logger.error(e.getMessage()); return null; } } /** * String日期转换成Date(yyyyMMddHHmmss) */ public static final Date string2DateyyyyMMddHHmmss(String dateStr) { if (dateStr == null || dateStr.length() == 0) return null; DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); try { return df.parse(dateStr); } catch (ParseException e) { logger.error(e.getMessage()); return null; } } /** * 按日加,指定日期 * * @param date * @param value * @return */ public static final Date addDay(Date date, int value) { Calendar now = Calendar.getInstance(); now.setTime(date); now.add(Calendar.DAY_OF_YEAR, value); return now.getTime(); } /** * 按小时加,指定日期 * * @param date * @param value * @return */ public static final Date addHours(Date date, int value) { Calendar now = Calendar.getInstance(); now.setTime(date); now.add(Calendar.HOUR_OF_DAY, value); return now.getTime(); } /** * 按分钟加,指定日期 * * @param date * @param value * @return */ public static final Date addMinutes(Date date, int value) { Calendar now = Calendar.getInstance(); now.setTime(date); now.add(Calendar.MINUTE, value); return now.getTime(); } /** * 按秒加,指定日期 * * @param date * @param value * @return */ public static final Date addSecond(Date date, int value) { Calendar now = Calendar.getInstance(); now.setTime(date); now.add(Calendar.SECOND, value); return now.getTime(); } /** * 按月加 * * @param value * @return */ public static final Date addMonth(Date date, int value) { Calendar now = Calendar.getInstance(); now.setTime(date); // now.add(Calendar.MONTH, 1); // now.set(Calendar.DATE, value); // return now.getTime(); now.add(Calendar.MONTH, value); return now.getTime(); } /** * 计算两个日期之间相差的时间(毫秒) * * @param startDate 开始时间 * @param endDate 结束时间 * @return 返回两个时间相差的毫秒数 */ public static long getInterval(Date startDate, Date endDate) { long startTime = startDate.getTime(); long endTime = endDate.getTime(); long interval = endTime - startTime; return interval; } /** * 计算两个日期之间相差的时间(秒) * * @param startDate 开始时间 * @param endDate 结束时间 * @return 返回两个时间相差的毫秒数 */ public static int getIntervalSeconds(Date startDate, Date endDate) { long startTime = startDate.getTime(); long endTime = endDate.getTime(); int interval = (int) ((endTime - startTime) / 1000); return interval; } /** * 计算两个日期之间相差的时间(天) * * @param startDate 开始时间 * @param endDate 结束时间 * @return 返回两个时间相差的毫秒数 */ public static int caculate2Days(Date startDate, Date endDate) { long calendarNum1 = startDate.getTime(); long calendarNum2 = endDate.getTime(); return Math.abs((int) ((calendarNum1 - calendarNum2) / C_ONE_DAY)); } /** * 计算两个日期之间相差的天数 * * @param startDate * @param endDate * @return 相差天数 * * @throws ParseException */ public static int daysBetween(Date startDate, Date endDate) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date1 = sdf.parse(sdf.format(startDate)); Date date2 = sdf.parse(sdf.format(endDate)); Calendar cal = Calendar.getInstance(); cal.setTime(date1); long time1 = cal.getTimeInMillis(); cal.setTime(date2); long time2 = cal.getTimeInMillis(); return Math.abs((int) ((time1 - time2) / C_ONE_DAY)); } /** * 将String类型转成date类型 功能描述: <br> * 〈功能详细描述〉 * * @param dateStr * @return * * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static Date parseStr2Date(String dateStr, String pattern) { Date date = null; SimpleDateFormat sdf = new SimpleDateFormat(pattern); try { date = sdf.parse(dateStr); return date; } catch (ParseException e) { logger.error("日期转换错误:" + e.getMessage()); throw new BizFailException("日期转换错误:" + e); } } /** * 将String类型转成date类型 功能描述: <br> * 〈功能详细描述〉 * * @param dateStr * @return * * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static Date parseStr2DateIgnoreError(String dateStr, String pattern) { Date date = null; SimpleDateFormat sdf = new SimpleDateFormat(pattern); try { date = sdf.parse(dateStr); } catch (Exception e) { logger.error("日期转换错误:", e); } return date; } /** * 将日期格式转换成String格式 * * @param date 需要转换的时间 * @param pattern 转换的时间格式 * @param allowException 转为时为空,是否抛出异常。如果为false,则返回空字符串 * @return */ public static String parseDate2String(Date date, String pattern, boolean allowException) { if (null == date) { if (allowException) { throw new IllegalArgumentException("the date must not be null!"); } else { return ""; } } SimpleDateFormat dateFormart = new SimpleDateFormat(pattern); return dateFormart.format(date); } /** * 将Date转换成指定格式的string * * @param date 需要转换的时间 * @param pattern 转换成的时间格式 * @return */ public static String parseDate2String(Date date, String pattern) { return parseDate2String(date, pattern, false); } /** * 目标时间是否在起止时间段内,起止时间都为空表示不判断 起始时间为空,认为不考虑起始时间 截至时间为空,认为不考虑截至时间 date.before after不包含日期相同的情况。 * * @param destDate * @param startDate * @param endDate * @return */ public static boolean isBetweenDate(Date destDate, Date startDate, Date endDate) { if (destDate == null) { return false; } if (startDate == null && endDate == null) { return true; } if (startDate == null && endDate != null) { return endDate.compareTo(destDate) >= 0; } else if (startDate != null && endDate == null) { return destDate.compareTo(startDate) >= 0; } else { return (destDate.compareTo(startDate) >= 0 && endDate.compareTo(destDate) >= 0); } } /** * 上个月最后一天 * * @return */ public static Date getLastMonthEnd() { Calendar endCalendar = Calendar.getInstance(); endCalendar.add(Calendar.MONTH, -1); endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH)); endCalendar.set(Calendar.HOUR_OF_DAY, 0); endCalendar.set(Calendar.MINUTE, 0); endCalendar.set(Calendar.SECOND, 0); endCalendar.set(Calendar.MILLISECOND, 0); return endCalendar.getTime(); } /** * 去年最后一天 * * @return */ public static Date getLastYearEnd() { Calendar endCalendar = Calendar.getInstance(); endCalendar.add(Calendar.YEAR, -1); endCalendar.set(Calendar.MONTH, 12 - 1); endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH)); endCalendar.set(Calendar.HOUR_OF_DAY, 0); endCalendar.set(Calendar.MINUTE, 0); endCalendar.set(Calendar.SECOND, 0); endCalendar.set(Calendar.MILLISECOND, 0); return endCalendar.getTime(); } /** * 当前日期所在季度最后一天年Y 月M 日D * * @return */ public static Map<String, Integer> getQuarterEndYMD() { Map<String, Integer> map = new HashMap<String, Integer>(); Date date = new Date(); Calendar endCalendar = Calendar.getInstance(); endCalendar.setTime(date); endCalendar.set(Calendar.DATE, 0); int Day = endCalendar.get(Calendar.DATE); int year = endCalendar.get(Calendar.YEAR); int month = endCalendar.get(Calendar.MONTH) + 1; int lastQuarterMonth = 0; if (month < 3) { lastQuarterMonth = 3; // 3月 } else if (month < 6) { lastQuarterMonth = 6; // 6月 } else if (month < 9) { lastQuarterMonth = 9;// 9月 } else { lastQuarterMonth = 12;// 12月 } map.put("year", year); map.put("month", lastQuarterMonth); map.put("day", Day); return map; } /** * 计算时间是否失效(入参时间小于当前时间)(毫秒) * * @param startDate 开始时间 * @param endDate 结束时间 * @return 返回两个时间相差的毫秒数 */ /** * 功能描述: 计算时间是否失效(入参时间小于当前时间)<br> * 〈功能详细描述〉 * * @param date * @return true:失效;false:未失效 * * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static boolean isInvalid(Date date) { if (date == null) { return true; } long startTime = date.getTime(); long endTime = new Date().getTime(); long interval = endTime - startTime; if (interval >= 0) { return true; } else { return false; } } /** * 功能描述:获取当天的起始时间 <br> * 〈功能详细描述〉 * * @param date * @return * * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static Date getStartTimeOfDay(Date date) { Calendar todayStart = DateUtil.toCalendar(date); todayStart.set(Calendar.HOUR_OF_DAY, 0); todayStart.set(Calendar.MINUTE, 0); todayStart.set(Calendar.SECOND, 0); todayStart.set(Calendar.MILLISECOND, 0); return todayStart.getTime(); } /** * 功能描述:获取当天的结束时间 <br> * 〈功能详细描述〉 * * @param date * @return * * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static Date getEndTimeOfDay(Date date) { Calendar todayEnd = DateUtil.toCalendar(date); todayEnd.set(Calendar.HOUR_OF_DAY, 23); todayEnd.set(Calendar.MINUTE, 59); todayEnd.set(Calendar.SECOND, 59); todayEnd.set(Calendar.MILLISECOND, 99); return todayEnd.getTime(); } /** * 将String类型转成date类型 功能描述: <br> * 〈功能详细描述〉 * * @param dateStr * @return * * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static boolean validateDate(String dateStr, String pattern) { if (StringUtil.isEmpty(dateStr)) { return false; } boolean isDate = true; SimpleDateFormat sdf = new SimpleDateFormat(pattern); try { sdf.parse(dateStr); } catch (ParseException e) { logger.error("日期转换错误:" + e.getMessage()); isDate = false; } return isDate; } // 获取指定时间月份第一天0点 public static Date getFirstDayOfMonth(Date date) throws ParseException { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天 String first = format.format(cal.getTime()); return format.parse(first); } }
最新回复(0)