package com.tscp.utils; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * 日期工具类 * * @author yangmin * @since 1.0 * @version 2018-1-01 yangmin */ public class DateUtils { /** FIXME */ private static SimpleDateFormat recordDateFormat = new SimpleDateFormat("yyyy-MM-dd"); /** 日期格式 yyyy-MM-dd */ private static String DATE_FROM = "yyyy-MM-dd"; /** 时间格式 yyyy-MM-dd HH:mm:ss */ private static String DATE_TIME_FROM = "yyyy-MM-dd HH:mm:ss"; /** * 返回指定日期前一天的日期,格式为yyyy-MM-dd * * @param currentDay 指定日期 * @return 值格式为yyyy-MM-dd */ public static String getOneDayOfBefore(String currentDay) { String retDay = ""; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { int amount = -1; Date currentDate = sdf.parse(currentDay); Calendar calendar = Calendar.getInstance(); calendar.setTime(currentDate); // 减去1天 calendar.add(Calendar.DAY_OF_MONTH, amount); Date date = calendar.getTime(); retDay = sdf.format(date); } catch (Exception e) { e.printStackTrace(); } return retDay; } /** * 将日期以指定的格式格式化 * * @param strDate 要格式化的日期字符串 * @param format 格式化的格式 * @return 格式化后的字符串 */ public static Date parseDate(String strDate, String format) { Date dest = new Date(); try { SimpleDateFormat df = new SimpleDateFormat(format); dest = df.parse(strDate); } catch (Exception e) { e.printStackTrace(); } return dest; } /** * 将时间按指定的格式转换输出 * * @param date 待转换格式的时间 * @param srcFormat 参数date的格式 * @param destFormat 要求转换成的格式 * @return 按指定格式转换后的时间字符串 */ public static String formate(String date, String srcFormat, String destFormat) { String dest = ""; try { SimpleDateFormat df = new SimpleDateFormat(srcFormat); Date source = df.parse(date); Calendar calendar = Calendar.getInstance(); calendar.setTime(source); df.applyPattern(destFormat); dest = df.format(calendar.getTime()); } catch (Exception e) { e.printStackTrace(); } return dest; } /** * 将日期以指定的格式格式化 * * @param date 要格式化的日期 * @param format 格式化的格式 * @return 格式化后的字符串 */ public static String formatDate(Date date, String format) { SimpleDateFormat dateFormat = new SimpleDateFormat(format); if (null == date) { date = new Date(); } return dateFormat.format(date); } /** * 求时间差 * * @param startDt 开始时间 * @param endDt 结束时间 * @param dtFormater 开始时间和结束时间格式 * @param diffType 时间差类型 秒、分、时、天 * @return 时间差 */ public static int getDateDiff(String startDt, String endDt, String dtFormater, String diffType) { int num = 0; try { SimpleDateFormat df = new SimpleDateFormat(dtFormater); Date startDate = df.parse(startDt); Date endDate = df.parse(endDt); int divNum = 1000; if ("second".equals(diffType)) { divNum = divNum * 1; } else if ("minute".equals(diffType)) { divNum = divNum * 60; } else if ("hour".equals(diffType)) { divNum = divNum * 60 * 60; } else if ("day".equals(diffType)) { divNum = divNum * 60 * 60 * 24; } num = (int) ((endDate.getTime() - startDate.getTime()) / divNum); } catch (Exception e) { System.out.print(e.getMessage()); } return num; } /** * 日期加天数 * * @param date 日期(格式为"yyyy-MM-dd") * @param format 格式 * @param num 加的天数 * @return String */ public static Date dateAddDay(Date date, String format, int num) { Date addDate = new Date(); SimpleDateFormat df = new SimpleDateFormat(format); Calendar calendar = new GregorianCalendar(); calendar.setTime(date); calendar.add(Calendar.DATE, num); addDate = calendar.getTime(); return addDate; } /** * 返回昨天的日期,格式为yyyy-MM-dd * * @return String */ public static String getYesterday() { Calendar rightNow; Date yesterday; SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); long tmp; rightNow = Calendar.getInstance(); tmp = rightNow.getTimeInMillis() - 24 * 60 * 60 * 1000; yesterday = new Date(tmp); return ft.format(yesterday); } /** * 获取当前时间 * * @return String */ public static String getCurrentDateTime() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(new Date()); } }
平时经常会用到日期,写一个工具类,供以后使用。