dateUtil 日期工具类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dateUtil 日期工具类相关的知识,希望对你有一定的参考价值。
package com.lbi.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 日期工具类 〈一句话功能简述〉<br> * 〈功能详细描述〉 * * @author 12070675 * @see [相关类/方法](可选) * @since [产品/模块版本] (可选) */ public class DateUtil { protected static Logger logger = LoggerFactory.getLogger(DateUtil.class); /** * 时间的各种格式器 */ public static final String DATE_STYLE = "yyyy-MM-dd"; public static final String DATE_STYLE2 = "yyyyMMdd"; public static final String DATE_YEAR_MONTH = "yyyyMM"; public static final String DATE_YM = "yyyy-MM"; public static final String DATE_TIME_STYLE = "yyyy-MM-dd HH:mm:ss"; public static final String DATE_TIME_STYLE3 = "yyyyMMddHHmmss"; public static final String DATE_TIME_STYLE4 = "yyyyMMddHHmmssSSS"; public static final String DATE_YEAR = "yyyy"; public static final String DATE_TIME = "HH:mm:ss"; /* private static final SimpleDateFormat SDF1 = new SimpleDateFormat(DATE_STYLE); private static final SimpleDateFormat SDF2 = new SimpleDateFormat(DATE_TIME_STYLE); private static final SimpleDateFormat SDF3 = new SimpleDateFormat(DATE_TIME_STYLE3); private static final SimpleDateFormat SDF4 = new SimpleDateFormat(DATE_TIME_STYLE4); private static final SimpleDateFormat SDF5 = new SimpleDateFormat(DATE_TIME); private static final SimpleDateFormat SDF6 = new SimpleDateFormat(DATE_STYLE2);*/ public static synchronized String formatDate(Date date) { SimpleDateFormat SDF1 = new SimpleDateFormat(DATE_STYLE); String dateStr = SDF1.format(date); return dateStr; } public static synchronized String formatDate(Date date,String sdf) { SimpleDateFormat SDF1 = new SimpleDateFormat(sdf); String dateStr = SDF1.format(date); return dateStr; } public static synchronized String formatDate2(Date date) { SimpleDateFormat SDF6 = new SimpleDateFormat(DATE_STYLE2); String dateStr = SDF6.format(date); return dateStr; } public static synchronized String formatDateTime(Date date) { SimpleDateFormat SDF2 = new SimpleDateFormat(DATE_TIME_STYLE); String dateStr = SDF2.format(date); return dateStr; } public static synchronized String formatTime(Date date) { SimpleDateFormat SDF5 = new SimpleDateFormat(DATE_TIME); String dateStr = SDF5.format(date); return dateStr; } public static synchronized String formatDateTime2(Date date) { SimpleDateFormat SDF3 = new SimpleDateFormat(DATE_TIME_STYLE3); String dateStr = SDF3.format(date); return dateStr; } public static synchronized Date parseToDate(String dateStr) { try { SimpleDateFormat SDF1 = new SimpleDateFormat(DATE_STYLE); Date date = SDF1.parse(dateStr); // sdf1.parse(dateStr); return date; } catch (ParseException e) { throw new LbiRuntimeException("日期转到成" + DATE_STYLE + "格式失败"); } } public static synchronized Date parseToDateTime(String dateStr) { try { SimpleDateFormat SDF2 = new SimpleDateFormat(DATE_TIME_STYLE); Date date = SDF2.parse(dateStr); // sdf1.parse(dateStr); return date; } catch (ParseException e) { throw new LbiRuntimeException("日期转到成" + DATE_TIME_STYLE + "格式失败"); } } public static synchronized Date parseToDateTimeEmpty(String dateStr) { try { SimpleDateFormat SDF3 = new SimpleDateFormat(DATE_TIME_STYLE3); Date date = SDF3.parse(dateStr); return date; } catch (ParseException e) { throw new LbiRuntimeException("参数:" + dateStr + "日期转到成" + DATE_TIME_STYLE3 + "格式失败"); } } // 生成17位编码 public static synchronized String formatDateToLongChar(Date date) { SimpleDateFormat SDF4 = new SimpleDateFormat(DATE_TIME_STYLE4); String dateStr = SDF4.format(date); return dateStr; } /** * 转换时间的格式yyyy-MM-dd HH:mm:ss到yyyyMMddHHmmss * * @param date * @return * @throws Exception */ public static String convertToDateStr(String date) { StringBuilder sbr = new StringBuilder(); sbr.append(date.substring(0, 4)); sbr.append(date.substring(5, 7)); sbr.append(date.substring(8, 10)); sbr.append(date.substring(11, 13)); sbr.append(date.substring(14, 16)); sbr.append(date.substring(17, 19)); return sbr.toString(); } /** * * 功能描述: <br> * 当前日期加减n天后的日期 * * @param n * @return * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static String nDaysAftertoday(String str, int n) { SimpleDateFormat df = new SimpleDateFormat(DATE_STYLE); try { Date myDate = df.parse(str); Calendar rightNow = Calendar.getInstance(); rightNow.setTime(myDate); rightNow.add(Calendar.DAY_OF_MONTH, +n); return df.format(rightNow.getTime()); } catch (ParseException e) { throw new LBIException("时间格式转换失败"); } } /** * * 功能描述: <br> * 当前日期加减n天后的日期 * * @param n * @return * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static String nHoursAftertoday(Date date, int n) { SimpleDateFormat df = new SimpleDateFormat(DATE_TIME_STYLE3); Calendar rightNow = Calendar.getInstance(); rightNow.setTime(date); rightNow.add(Calendar.HOUR_OF_DAY, +n); return df.format(rightNow.getTime()); } /** * * 功能描述: <br> * 当前日期加减n天后的日期 * * @param n * @return * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static String nDaysAftertoday(Date date, int n) { SimpleDateFormat df = new SimpleDateFormat(DATE_STYLE2); Calendar rightNow = Calendar.getInstance(); rightNow.setTime(date); rightNow.add(Calendar.DAY_OF_MONTH, +n); return df.format(rightNow.getTime()); } public static String nDaysAftertoday(int n,String sdf) { SimpleDateFormat df = new SimpleDateFormat(sdf); Calendar rightNow = Calendar.getInstance(); rightNow.setTime(new Date()); rightNow.add(Calendar.DAY_OF_MONTH, +n); return df.format(rightNow.getTime()); } public static String nYearsAftertoday(Date date, int n) { SimpleDateFormat df = new SimpleDateFormat(DATE_YEAR); Calendar rightNow = Calendar.getInstance(); rightNow.setTime(date); rightNow.add(Calendar.YEAR, +n); return df.format(rightNow.getTime()); } public static int compareDate(String date1, String date2) { SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss"); try { Date dt1 = df.parse(date1); Date dt2 = df.parse(date2); if (dt1.getTime() > dt2.getTime()) { return 1; } else if (dt1.getTime() < dt2.getTime()) { return -1; } } catch (ParseException exception) { throw new LBIException("时间格式转换失败"); } return 0; } public static boolean validateTime(String date) { try { new SimpleDateFormat(DATE_TIME_STYLE).parse(date); } catch (ParseException e) { return false; } String datePattern1 = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}"; Pattern pattern = Pattern.compile(datePattern1); Matcher match = pattern.matcher(date); return match.matches(); } public static String getHours() { Calendar cal = Calendar.getInstance(Locale.CHINA); int hour = cal.get(Calendar.HOUR_OF_DAY);// 小时 if (hour == 0) { return "00"; } else if (hour < 11) { return "0" + (hour - 1); } else { return String.valueOf(hour - 1); } } /** * * 获取当前时间相隔i小时的时间<br> * 格式是:yyyyMMddHHmm * * @param i * @return * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static String getTimeToMinute(int i) { Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); cal.set(Calendar.HOUR, cal.get(Calendar.HOUR) + i); String time = sdf.format(cal.getTime()); return time.substring(0, 12); } public static String getFirstDayOfMonth() { SimpleDateFormat SDF6 = new SimpleDateFormat(DATE_STYLE2); Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, 0); c.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天 String first = SDF6.format(c.getTime()); return first; } public static String getFirstDayOfMonth(String dateStr) { SimpleDateFormat SDF6 = new SimpleDateFormat(DATE_STYLE2); Date date = parseToDate(dateStr); Calendar c = Calendar.getInstance(); c.setTime(date); c.add(Calendar.MONTH, 0); c.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天 String first = SDF6.format(c.getTime()); return first; } public static String getLastDayOfFrontMonth() { SimpleDateFormat SDF6 = new SimpleDateFormat(DATE_STYLE2); Calendar c = Calendar.getInstance(); c.set(Calendar.DAY_OF_MONTH, 0); String first = SDF6.format(c.getTime()); return first; } public static String getLastDayOfFrontMonth(String dateStr) { SimpleDateFormat SDF6 = new SimpleDateFormat(DATE_STYLE2); Date date = parseToDate(dateStr); Calendar c = Calendar.getInstance(); c.setTime(date); c.set(Calendar.DAY_OF_MONTH, 0); String first = SDF6.format(c.getTime()); return first; } /** * * 功能描述: h获取上一个季度的最后一天<br> * 〈功能详细描述〉 * * @return * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static String getLastDayOfFrontQuarter() { SimpleDateFormat SDF6 = new SimpleDateFormat(DATE_STYLE2); Calendar c = Calendar.getInstance(); int month = c.get(Calendar.MONTH);// 获取当前月份0-11 int n = month / 3; month = n * 3; c.set(Calendar.MONTH, month); c.set(Calendar.DAY_OF_MONTH, 0); String first = SDF6.format(c.getTime()); return first; } public static String getLastDayOfFrontQuarter(String dateStr) { SimpleDateFormat SDF6 = new SimpleDateFormat(DATE_STYLE2); Date date = parseToDate(dateStr); Calendar c = Calendar.getInstance(); c.setTime(date); int month = c.get(Calendar.MONTH);// 获取当前月份0-11 int n = month / 3; month = n * 3; c.set(Calendar.MONTH, month); c.set(Calendar.DAY_OF_MONTH, 0); String first = SDF6.format(c.getTime()); return first; } public static String getFirstDayOfYear() { SimpleDateFormat SDF6 = new SimpleDateFormat(DATE_STYLE2); Calendar c = Calendar.getInstance(); c.set(Calendar.MONTH, Calendar.JANUARY); c.set(Calendar.DAY_OF_MONTH, 1); String first = SDF6.format(c.getTime()); return first; } public static String getFirstDayOfYear(String dateStr) { SimpleDateFormat SDF6 = new SimpleDateFormat(DATE_STYLE2); Date date = parseToDate(dateStr); Calendar c = Calendar.getInstance(); c.setTime(date); c.set(Calendar.MONTH, Calendar.JANUARY); c.set(Calendar.DAY_OF_MONTH, 1); String first = SDF6.format(c.getTime()); return first; } /** * * 功能描述: 获取日期的星期<br> * 〈功能详细描述〉 * * @param dateStr格式为YYYYMMDD * @return * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static String getWeek(String dateStr) { try { SimpleDateFormat SDF6 = new SimpleDateFormat(DATE_STYLE2); Date date = SDF6.parse(dateStr); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); String week = LBIConstants.WEEKS.get(String.valueOf(calendar.get(Calendar.DAY_OF_WEEK))); return week; } catch (ParseException e) { return null; } } /** * * 功能描述: <br> * 当前日期加减n天后的日期 * * @param n * @return * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static String nMonthsAftertoday(Date date, int n) { SimpleDateFormat df = new SimpleDateFormat(DATE_YEAR_MONTH); Calendar rightNow = Calendar.getInstance(); rightNow.setTime(date); rightNow.add(Calendar.MONTH, +n); return df.format(rightNow.getTime()); } /** * * 功能描述: <br> * 当前日期加减n天后的日期 * * @param n * @return * @throws ParseException * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static String nMonthsAftertoday(String date, int n) { SimpleDateFormat df = new SimpleDateFormat(DATE_YEAR_MONTH); Calendar rightNow = Calendar.getInstance(); try { rightNow.setTime(df.parse(date)); } catch (ParseException e) { logger.error("",e); } rightNow.add(Calendar.MONTH, +n); return df.format(rightNow.getTime()); } /** * * 功能描述: <br> * 当前日期加减n天后的日期 * * @param n * @return * @throws ParseException * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static String getDateByFormat(String fmt, Date date){ SimpleDateFormat df = new SimpleDateFormat(fmt); return df.format(date); } public static void main(String[] args) throws ParseException { System.out.println(DateUtil.nMonthsAftertoday(new Date(), -1)); } }
以上是关于dateUtil 日期工具类的主要内容,如果未能解决你的问题,请参考以下文章
3hutool源码分析:DateUtil(时间工具类)-获取日期的各种内容
日期工具类 DateUtils(继承org.apache.commons.lang.time.DateUtils类)