/* * Copyright (C), 2002-2018, song * FileName: DateUtil.java * Author: feng * Date: 2018-06-25 下午16:00:00 * Description: 日期工具类 * History: //修改记录 * <author> <time> <version> <desc> * 修改人姓名 修改时间 版本号 描述 */ package com.suning.vicpp.util; import java.sql.Time; import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.apache.commons.lang3.time.DateUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 日期工具类 * * @author feng */ public final class DateUtil extends DateUtils { private static final Logger logger = LoggerFactory.getLogger(DateUtil.class); /** * 年月日常量 */ public static final String DATEFORMATE_YYYYMMDD = "yyyyMMdd"; /** * 日期格式 */ public static final String DATEFORMATE_YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; /** * 日期格式 */ public static final String DATEFORMATE_YYYY_MM_DD_HHMMSS = "yyyy-MM-dd HH:mm:ss"; /** * 日期格式 */ public static final String DATEFORMATE_YYYY_MM_DD = "yyyy-MM-dd"; /** * 日期格式 */ public static final String DATEFORMATE_CN_TIME = "yyyy年MM月dd日 HH:mm:ss"; /** * 日期格式 */ public static final String DATEFORMATE_CN_DATE = "yyyy年MM月dd日"; /** * 日期格式 */ public static final String DATEFORMATE_YYYYMMDD_SLASH = "yyyy/MM/dd"; /** * 日期格式 */ public static final String DATEFORMATE_FLAG_HHMMSS = "HH:mm:ss"; /** * 日期格式 */ public static final String DATEFORMATE_HHMMSS = "hhMMss"; /** * 日期格式转换器 */ static final DateFormat YYYYMMDDHHMMSS_FORMAT = new java.text.SimpleDateFormat( DATEFORMATE_YYYYMMDDHHMMSS); /** * 日期格式转换器 */ static final DateFormat YYYYMMDD_FORMAT = new java.text.SimpleDateFormat( DATEFORMATE_YYYYMMDD); /** * 日期格式转换器 */ static final DateFormat YYYY_MM_DD_FORMAT = new java.text.SimpleDateFormat( DATEFORMATE_YYYY_MM_DD_HHMMSS); /** * 日期格式转换器 */ static final DateFormat CN_TIME_FORMAT = new java.text.SimpleDateFormat( DATEFORMATE_CN_TIME); /** * 日期格式转换器 */ static final DateFormat YYYY_MM_DD = new java.text.SimpleDateFormat( DATEFORMATE_YYYY_MM_DD); /** * 日期格式转换器 */ static final DateFormat YYYYMMDD_SLASH_FORMAT = new java.text.SimpleDateFormat( DATEFORMATE_YYYYMMDD_SLASH); /** * 日期格式转换器 */ static final DateFormat HHMMSS_FORMAT = new java.text.SimpleDateFormat( DATEFORMATE_HHMMSS); /** * 日期格式转换器 */ static final DateFormat TIME_FORMATE = new java.text.SimpleDateFormat( "HHmmss"); /** * 格式化日期函数 内部使用 * * 根据指定格式对当前日期进行格式化 * * @param date * 当前日期 * @param format * 需要转化的格式 * @return String 转换后的字符串格式日期 */ public static String parseDate(Date date, String format) { SimpleDateFormat dateformat = new SimpleDateFormat(format); return dateformat.format(date); } /** * 取当前日期 功能描述: 输入参数:<按照参数定义顺序> * * @param 参数说明 * 返回值: 类型 <说明> * @return 返回值 * @throw 异常描述 * @see 需要参见的其它内容 */ public static java.sql.Date getCurDate() { return getDate(getCurTime()); } /** * 取当前日期,格式yyyy-MM-dd HH:mm:ss 功能描述: 输入参数:<按照参数定义顺序> * * @param 参数说明 * 返回值: 类型 <说明> * @return 返回值 * @throw 异常描述 * @see 需要参见的其它内容 */ public static String getFormatCurDate() { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date curdate = getCurDate(); return formatter.format(curdate); } /** * 根据指定格式获取当前日期 功能描述: 输入参数:<按照参数定义顺序> * * @param 参数说明 * 返回值: 类型 <说明> * @return 返回值 * @throw 异常描述 * @see 需要参见的其它内容 */ public static String getFormatCurDate(String format) { SimpleDateFormat formatter = new SimpleDateFormat(format); Date curdate = getCurDate(); return formatter.format(curdate); } /** * 根据类型 type:year;month;day time:表示时间多长,负数标示往前推 * 返回当前时间的固定相比时间 * @param format * 最终返还的格式 * @return */ public static String getFormatCurDate(String format, String type, int time) { Date curdate = getCurDate();//当前时间 Calendar date = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat(format); date.setTime(curdate); if ("year".equals(type)) { date.add(Calendar.YEAR, time); return formatter.format(date.getTime()); } else if ("month".equals(type)) { date.add(Calendar.MONTH, time); return formatter.format(date.getTime()); } else if ("day".equals(type)) { date.add(Calendar.DATE, time); return formatter.format(date.getTime()); } else { return formatter.format(curdate); } } public static String getFormatCurDate(String format, String type, int time,Date curdate) { Calendar date = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat(format); date.setTime(curdate); if ("year".equals(type)) { date.add(Calendar.YEAR, time); return formatter.format(date.getTime()); } else if ("month".equals(type)) { date.add(Calendar.MONTH, time); return formatter.format(date.getTime()); } else if ("day".equals(type)) { date.add(Calendar.DATE, time); return formatter.format(date.getTime()); } else { return formatter.format(curdate); } } /** * 把yyyy-MM-dd格式的字符串转换成Date * * @param dateStr * @return */ public static java.util.Date getDateOfStr(String dateStr) { DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd"); java.util.Date da = null; try { da = df.parse(dateStr); } catch (Exception e) { logger.error("DateUtil.getDateOfStr,{}",e); } return da; } /** * 获取当前日期 yyyy-MM-dd * * @return */ public static String getCurrentDateString() { return formateDateStr(new Date()); } /** * 获取明天日期 yyyy-MM-dd * * @return */ public static String getTomorrowDateString() { return getDateStringDelay(1); } /** * 获取距离今天 delay 天的日期 yyyy-MM-dd * * @param delay * @return */ public static String getDateStringDelay(int delay) { return formateDateStr(DateUtil.addDate(new Date(), delay)); } /** * * 功能描述:取当前时间戳 输入参数:<按照参数定义顺序> * * @param 参数说明 * 返回值: 类型 <说明> * @return 返回值 * @throw 异常描述 * @see 需要参见的其它内容 */ public static Timestamp getCurTime() { return new Timestamp(Calendar.getInstance().getTime().getTime()); } /** * * 功能描述:取当前时间,以字符串形式返回 输入参数:<按照参数定义顺序> * * @param 参数说明 * 返回值: 类型 <说明> * @return 返回值 * @throw 异常描述 * @see 需要参见的其它内容 */ public static String getTime() { Timestamp time = new Timestamp(Calendar.getInstance().getTime() .getTime()); return time.toString(); } /** * 得到当前日期 * * @param type * :0日期中间横线;1:有横线 * @return */ public static String getDate(int type) { Calendar now = Calendar.getInstance(); int year = now.get(Calendar.YEAR); int month = now.get(Calendar.MONTH) + 1; int day = now.get(Calendar.DAY_OF_MONTH); String sMonth = String.valueOf(month); if (sMonth.length() == 1) sMonth = "0" + sMonth; String sDay = String.valueOf(day); if (sDay.length() == 1) sDay = "0" + sDay; String tDate = String.valueOf(year) + "-" + sMonth + "-" + sDay; if (type == 0) tDate = String.valueOf(year) + sMonth + sDay; return tDate; } /** * 把日期转换成 yyyyMMdd格式的字符串 * * @param date * @return */ public static synchronized String getShortStrDate(java.util.Date date) { return YYYYMMDD_FORMAT.format(date); } /** * * 把日期转换成 yyyyMMddHHmmss格式的字符串 * * @param date * @return */ public static synchronized String getShortStrDateTime(java.util.Date date) { return YYYYMMDDHHMMSS_FORMAT.format(date); } /** * 根据Timestamp获得日期 * * @param time * @return java.sql.Date */ public static java.sql.Date getDate(Timestamp time) { return new java.sql.Date(time.getTime()); } /** * 获得对应时间time的相应field的值。 如获得当前时间的分钟,则调用方式如下 getTimeFieldStr(getCurTime(), * Calendar.MINUTE) * * @param time * @param field * @return String */ public static String getTimeFieldStr(Timestamp time, int field) { Calendar calendar = Calendar.getInstance(); calendar.setTime(new java.util.Date(time.getTime())); int fieldValue = calendar.get(field); if (field == Calendar.MONTH) fieldValue++; return String.valueOf(fieldValue); } /** * 获得时间time对应的中文日期的字符串 * * @param time * @return String -- 如 2003年5月12日12:12:12 */ public static String getDateTimeCn() { DateFormat f3 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); return f3.format(new Date()); } /** * 将 Timestamp 对应的日期以 "yyyy-MM-dd" 格式返回一个字符串 * * @param stamp * @return */ public static String formatDate(Timestamp stamp) { if (stamp == null) return ""; return new java.sql.Date(stamp.getTime()).toString(); } /** * 返回前天,昨天,明天,后天等 * * @param diffdate * 于今天相差的天数 * @return */ public static String getCustomDate(int diffdate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Date curdate = getCurDate(); long myTime = curdate.getTime() + 1000L * 3600 * 24 * diffdate; curdate.setTime(myTime); String customDate = formatter.format(curdate); return customDate; } /** * * 功能描述:根据传入日期格式化,yyyy-MM-dd 输入参数:日期 * * @param 参数说明 * 返回值: 类型 String * @return 返回值 * @throw 异常描述 * @see 需要参见的其它内容 */ public static String getFormatDate(java.util.Date date) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); return formatter.format(date); } /** * 根据传入日期格式化,yyyy-MM-dd,传入null返回null 功能描述: 日期 输入参数:<按照参数定义顺序> * * @param 参数说明 * 返回值: 类型 String * @return 返回值 * @throw 异常描述 * @see 需要参见的其它内容 */ public static String formateDate(java.util.Date date) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); if (date != null) { return df.format(date); } else { return null; } } /** * 格式化日期格式返回字符串 * * @param date * @param dateFormat * @return */ public static String formateDate(java.util.Date date, DateFormat dateFormat) { return dateFormat.format(date); } /** * 日期格式 yyyy-MM-dd * * @param date * @return */ public static synchronized String formateDateStr(java.util.Date date) { if (date == null) { return ""; } return formateDate(date, YYYY_MM_DD); } /** * 得到某年某月的第一天 * * @return */ public static String getMonthFirstDay(int yearAmount,int monthAmount) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.YEAR, yearAmount); calendar.add(Calendar.MONTH, monthAmount); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); return getFormatDate(calendar.getTime()); } /** * 得到某个月的最后一天 * * @return */ public static String getMonthLastDay(int yearAmount,int monthAmount) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.YEAR, yearAmount); calendar.add(Calendar.MONTH, monthAmount); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); return getFormatDate(calendar.getTime()); } /** * 得到某个月的最后一天 * * @return */ public static int getDayNumOfMonth(int yearAmount,int monthAmount) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.YEAR, yearAmount); calendar.add(Calendar.MONTH, monthAmount); return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); } /** * * 功能描述:根据传入日期获取当月第几天 输入参数:日期date * * @param 参数说明 * 返回值: 类型 int * @return 返回值 * @throw 异常描述 * @see 需要参见的其它内容 */ public static int getDayofMonth(Date date1) { Calendar cld = Calendar.getInstance(); cld.setTime(date1); return cld.get(5); } /** * 日期相加 * * @param date * 日期 * @param day * 天数 * @return 返回相加后的日期 */ public static java.util.Date addDate(java.util.Date date, int day) { java.util.Calendar c = java.util.Calendar.getInstance(); c.setTimeInMillis(getMillis(date) + ((long) day) * 24 * 3600 * 1000); return c.getTime(); } /** * 日期相加 * * @param date * 日期 * @param day * 天数 * @return 返回相加后的日期 */ public static java.util.Date minusDate(java.util.Date date, int day) { java.util.Calendar c = java.util.Calendar.getInstance(); c.setTimeInMillis(getMillis(date) - ((long) day) * 24 * 3600 * 1000); return c.getTime(); } /** * 日期相加 * * @param date * 日期 * @param day * 天数 * @return 返回相加后的日期 */ public static java.util.Date addDate(java.util.Date date, double day) { java.util.Calendar c = java.util.Calendar.getInstance(); c.setTimeInMillis((long) (getMillis(date) + day * 24 * 3600 * 1000)); return c.getTime(); } /** * 分钟相加 * * @param date * @param minite * @return */ public static java.util.Date addMinute(java.util.Date date, double minute) { java.util.Calendar c = java.util.Calendar.getInstance(); c.setTimeInMillis((long) (getMillis(date) + minute * 60 * 1000)); return c.getTime(); } /** * 日期相减 * * @param date * 日期 * @param date1 * 日期 * @return 返回相减后的日期 */ public static int diffDate(java.util.Date date, java.util.Date date1) { return (int) ((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000)); } /** * * 功能描述:小时相减 输入参数:date * * @param 参数说明 * 返回值: 类型 int * @return 返回值 * @throw 异常描述 * @see 需要参见的其它内容 */ public static int diffDateToHour(Date date, Date date1) { return (int) ((getMillis(date) - getMillis(date1)) / (1000 * 60 * 60)); } /** * 功能描述: <br> * 两个日期间隔多少秒 * * @param firstDate * @param secondDate * @return * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static int diffSeconds(java.util.Date firstDate, java.util.Date secondDate) { return (int) ((getMillis(firstDate) - getMillis(secondDate)) / 1000); } /** * 返回毫秒 * * @param date * 日期 * @return 返回毫秒 */ public static long getMillis(java.util.Date date) { java.util.Calendar c = java.util.Calendar.getInstance(); c.setTime(date); return c.getTimeInMillis(); } /** * 判断是否同年同月 * * @param t1 * 日期1 * @param t2 * 日期2 * @return */ public static boolean isSameMonth(Timestamp t1, Timestamp t2) { Calendar cal = Calendar.getInstance(); cal.setTime(t1); int year1 = cal.get(Calendar.YEAR); int month1 = cal.get(Calendar.MONTH); logger.info("year1:" + year1 + "month1:" + month1); cal.setTime(t2); int year2 = cal.get(Calendar.YEAR); int month2 = cal.get(Calendar.MONTH); logger.info("year2:" + year2 + "month2:" + month2); if (year1 == year2 && month1 == month2) return true; return false; } /** * 根据传入的数据获取星期 * * @param i * @return */ public static String getWeek(int i) { String result = ""; switch (i) { case 1: result = "星期日"; break; case 2: result = "星期一"; break; case 3: result = "星期二"; break; case 4: result = "星期三"; break; case 5: result = "星期四"; break; case 6: result = "星期五"; break; case 7: result = "星期六"; break; default: break; } return result; } /** * * 功能描述:根据传入时间获取时间戳 输入参数:date * * @param 参数说明 * 返回值: 类型 Timestamp * @return 返回值 * @throw 异常描述 * @see 需要参见的其它内容 */ public static Timestamp dateToTimestamp(java.util.Date date) { if (date != null) { return new java.sql.Timestamp(date.getTime()); } return null; } /** * 计算两个日期相减 * * @param date1 * @param date2 * @return 返回天数 */ public static int getDay(java.util.Date date1, java.util.Date date2) { Long quot = date2.getTime() - date1.getTime(); quot = quot / (1000 * 60 * 60 * 24) + 1; return quot.intValue(); } // 判断时间s1是否在时间s2之前 public static boolean compDate(String s1, String s2) { int day = 0; SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date time1; java.util.Date time2; try { time1 = sf.parse(s1); time2 = sf.parse(s2); day = (int) ((time2.getTime() - time1.getTime()) / 3600 / 24 / 1000); } catch (ParseException e) { logger.error(e.getMessage()); } if (day > 0) { return true; } else { return false; } } /** * * 功能描述:判断时间s1是否在时间s2之前 输入参数:s1,s2 * * @param 参数说明 * 返回值: 类型 <说明> * @return 返回值 * @throw 异常描述 * @see 需要参见的其它内容 */ public static String compareTo(String s1, String s2) { int day = 0; SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date time1; java.util.Date time2; try { time1 = sf.parse(s1); time2 = sf.parse(s2); day = (int) ((time2.getTime() - time1.getTime()) / 3600 / 24 / 1000); } catch (ParseException e) { logger.error(e.getMessage()); } if (day > 0) { return s2; } else { return s1; } } /** * 把日期格式化成中文格式 */ synchronized public static String parseCnDate(Date date) { return CN_TIME_FORMAT.format(date); } public static Time getTime(Timestamp now) { SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); return Time.valueOf(sdf.format(now)); } /** * 把整型转换成时间(如 12345 转换成 01:23:45) * * @param intValue * @return */ public static String parseIntValueToTime(Integer intValue) { String str = "00:00:00"; if (intValue != null) { String _str = String.valueOf(intValue); switch (_str.length()) { case 1: _str = "00000" + _str; break; case 2: _str = "0000" + _str; break; case 3: _str = "000" + _str; break; case 4: _str = "00" + _str; break; case 5: _str = "0" + _str; break; case 6: break; default: _str = "000000"; break; } str = _str.substring(0, 2) + ":" + _str.substring(2, 4) + ":" + _str.substring(4); } return str; } /** * 返回去年的年份 * @return * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static int getLastYear() { Calendar now = Calendar.getInstance(); int year = now.get(Calendar.YEAR) - 1; return year; } public static Date convertToDate(String dateStr) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { return format.parse(dateStr); } catch (ParseException e) { return null; } } public static Date convertToDate(String dateStr,String formatStr) { SimpleDateFormat format = new SimpleDateFormat(formatStr); try { return format.parse(dateStr); } catch (ParseException e) { return null; } } /** * 返回当前时间的自定义格式String * * @param dateFormat * @return 自定义格式的日期 * 自定义支持的格式有: yyyy-MM-dd HH:mm:ss yyyy年MM月dd日 HH时mm分ss秒 yyyy年MM月dd日 * HH时mm分 yyyy-MM-dd HH:mm yyyyMMddHH:mm:ss yyyy-MM-dd yyyyMMdd * HHmmss yyyy年MM月dd日 HH:mm:ss" HH时mm分ss秒 ......(很多) */ public static String getDefinableTime(String dateFormat) { if (null == dateFormat || "".equals(dateFormat.trim())) { return ""; } Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat(dateFormat); String dateString = formatter.format(currentTime); return dateString; } /** * * 日期转换成指定格式的字符串 * * @param date * @param formatStr * @return * @see [相关类/方法](可选) * @since [产品/模块版本](可选) */ public static String getDateStrByFormat(Date date, String formatStr) { if (null == date || null == formatStr || "".equals(formatStr.trim())) { return ""; } SimpleDateFormat format = new SimpleDateFormat(formatStr); return format.format(date); } }
相关推荐
在Java编程中,DateUtil工具类是用于处理和操作日期时间的一个常见实用程序类。它提供了许多方便的方法,使得开发者可以轻松地进行日期格式化、转换以及比较等操作。在这个"dateUtil工具类"中,我们可以看到核心功能...
public static final String YYYYMMDDHHMMSS = "yyyy/MM/dd HH:mm:ss";
在Java编程领域,DateUtil工具类是开发人员经常会用到的一种辅助类,它提供了一系列方便的方法来处理日期和时间。这个被称为"史上最全面DateUtil工具类,没有之一"的资源,显然包含了处理日期和时间的各种功能,使得...
Java DateUtil 工具类时间戳类型转换详解 Java DateUtil 工具类是 Java 开发中经常使用的一种日期处理工具类,它提供了多种日期处理方法,包括时间戳类型转换、日期格式化、日期解析等。下面我们将详细介绍 Java ...
JS日期工具类,方便大家的使用。后期会持续更新.......
这里我们关注的是`DateUtil`工具类,它专门用于处理日期转换格式的操作。`DateUtil`工具类通常包含了对日期进行格式化、解析、比较等常用功能,使得在Android项目中处理日期变得更加便捷。 在Java中,日期对象主要...
今天,我们将详细介绍DateUtil工具类的实现和使用。 日期工具类的重要性 在Android开发中,日期和时间是非常常见的数据类型。因此,处理日期和时间相关的操作是非常重要的。DateUtil工具类提供了许多有用的方法来...
在Java编程中,DateUtil是一个常见的...这些是DateUtil工具类中常见的功能,它们极大地简化了日期和时间的处理工作,提高了代码的可读性和可维护性。在实际项目中,可以根据需求自定义更多实用的方法,提高开发效率。
DateUtil 日期工具类
DateUtil工具类旨在简化这个过程。它可能包含一系列静态方法,如获取当前日期、格式化日期字符串、进行日期比较、计算两个日期之间的差值等。例如,可以有一个`formatDate(Date date, String pattern)`方法,用于将...
dateUtil js工具类
原创强大的jdbc数据库操作工具类: 1.获取数据源 2.设置数据源 3.获取数据库连接 4.执行insert/delete语句,一个参数列表 ...源码用到的DateUtil工具类,请到http://download.csdn.net/detail/whatismvc/5994343下载。
Java中的DateUtil时间工具类是开发者在处理日期和时间时常用的一个自定义工具类。它通常包含了一系列静态方法,用于简化Java内置的日期和时间API的使用,提高代码的可读性和可维护性。在实际开发中,由于Java 8之前...
在Java编程语言中,`DateUtil`通常是一个自定义的工具类,用于处理与日期和时间相关的操作。这个工具类可以极大地简化日期处理任务,提供比Java内置的`java.util.Date`和`java.time`包更友好的API。在本文中,我们将...
DateUtil工具类可能提供了一些便捷的方法,如快速格式化日期、计算两个日期之间的差值、获取当前日期与时间等。例如,`DateUtil.formatDate()`可以将日期对象转换为指定格式的字符串,`DateUtil.between()`用于计算...
资源名称:DateUtil 日期时间转换工具类 内容概要:日期时间转换工具类,包括基本的Date类型,String类型,TimeStamp类型,LocalDateTime类型,LocalDate类型之间的互相转换,还提供了许多与时间获取,时间计算有关...
个人整理的java的关于Date对象的日期时间处理工具类,若存在问题还望大家在评论中提出,我将一直进行修改维护
DateUtil 工具类提供了 isLeapYear 方法,用于判断是否是润年。该方法通过对年份进行判断,来确定是否是润年。 日期相加减 DateUtil 工具类还提供了日期相加减的操作。例如,可以使用 Calendar 对象来对日期进行加...