日期处理工具
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.springframework.util.StringUtils; /** * 日期处理工具 */ public class DateUtil { /*********************************************************************************************/ /****************************************** 日期的解析 ********************************************/ /*********************************************************************************************/ // 常用时间格式 private static String yyyyMMdd = "yyyyMMdd"; private static String yyyyMMddHHmmss = "yyyyMMddHHmmss"; private static String yyyyMMddHHmmssSSS = "yyyyMMddHHmmssSSS"; /** * 解析时间 * * @param formatDate 需要解析的格式化的时间串 * @return */ public static Date parseDate(String formatDate) throws ParseException { if (null != formatDate && !"".equals(formatDate)) { // 清除日期串中的非数字部分 formatDate = formatDate.replaceAll("\\D", ""); // 根据日期串的不同长度,初始化不同的解析工具 SimpleDateFormat sdf = null; if (formatDate.length() == yyyyMMdd.length()) { sdf = new SimpleDateFormat(yyyyMMdd); } if (formatDate.length() == yyyyMMddHHmmss.length()) { sdf = new SimpleDateFormat(yyyyMMddHHmmss); } if (formatDate.length() == yyyyMMddHHmmssSSS.length()) { sdf = new SimpleDateFormat(yyyyMMddHHmmssSSS); } // 纯数字日期的解析 if (null != sdf) { return sdf.parse(formatDate); } } return null; } /*********************************************************************************************/ /****************************************** 日期的计算 ********************************************/ /*********************************************************************************************/ public static Date addYears(Date date, Integer years) { return dateCalculate(date, years, null, null, null, null, null, null); } public static Date addMonths(Date date, Integer months) { return dateCalculate(date, null, months, null, null, null, null, null); } public static Date addDays(Date date, Integer days) { return dateCalculate(date, null, null, days, null, null, null, null); } public static Date addHours(Date date, Integer hours) { return dateCalculate(date, null, null, null, hours, null, null, null); } public static Date addMinutes(Date date, Integer minutes) { return dateCalculate(date, null, null, null, null, minutes, null, null); } public static Date addSeconds(Date date, Integer seconds) { return dateCalculate(date, null, null, null, null, null, seconds, null); } public static Date addMilliseconds(Date date, Integer milliseconds) { return dateCalculate(date, null, null, null, null, null, null, milliseconds); } /** * 日期的计算 * * @param date 要计算的日期 * @param years 需要在date上增加的年数 * @param months 需要在date上增加的月数 * @param days 需要在date上增加的天数 * @param hours 需要在date上增加的小时数 * @param minutes 需要在date上增加的分钟数 * @param seconds 需要在date上增加的秒数 * @param milliseconds 需要在date上增加的豪秒数 * @return */ public static Date dateCalculate(Date date, Integer years, Integer months, Integer days, Integer hours, Integer minutes, Integer seconds, Integer milliseconds) { // 日期无法计算的情况 if (null == date) { return null; } // 日期可以计算的情况 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); if (null != years) { calendar.add(Calendar.YEAR, years); } if (null != months) { calendar.add(Calendar.MONTH, months); } if (null != days) { calendar.add(Calendar.DAY_OF_MONTH, days); } if (null != hours) { calendar.add(Calendar.HOUR_OF_DAY, hours); } if (null != minutes) { calendar.add(Calendar.MINUTE, minutes); } if (null != seconds) { calendar.add(Calendar.SECOND, seconds); } if (null != milliseconds) { calendar.add(Calendar.MILLISECOND, milliseconds); } // 返回计算完毕后的数据 return calendar.getTime(); } /*********************************************************************************************/ /****************************************** 日期的格式化 ******************************************/ /*********************************************************************************************/ /** * 日期格式化 * * @param date 需要格式化的日期 * @return 使用默认日期格式,格式化后的日期 */ public static String format(Date date) { return format(date, null); } /** * 日期格式化 * * @param date 需要格式化的日期 * @param format 日期的格式, 未设置时, 使用默认日期格式 * @return 格式化后的日期 */ public static String format(Date date, String format) { if (StringUtils.isEmpty(format)) { format = "yyyy-MM-dd HH:mm:ss"; } SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(date); } }