時間工具類2
- 日期模板枚舉類PatternEnum
public enum PatternEnum { //g global全稱,cn中國 G_DATE_TIME_DEFAULT("yyyy-MM-dd HH:mm:ss"),// 默認的年月日時分秒格式 G_DATE_TIME_FOR_CN("yyyy年MM月dd日 HH時mm分ss秒"),// 中文格式 DATE_FOR_DAY("yyyy-MM-dd"),// 一般的天格式 DATE_FOR_DAY_CN("yyyy年MM月dd日"); private PatternEnum(String name){ this.name=name; } private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
編寫日期工具類DateUtils
public class DateUtils { // 用于存放不同模板的日期 private static final ThreadLocal<Map<String, SimpleDateFormat>> LOCAL = new ThreadLocal<Map<String, SimpleDateFormat>>() { @Override protected Map<String, SimpleDateFormat> initialValue() { return new HashMap<>(); } }; /** * 返回一個SimpleDateFormat,每個線程只會new一次pattern對應的sdf * * @param pattern * @return */ private static SimpleDateFormat getSdf(String pattern) { Map<String, SimpleDateFormat> map = LOCAL.get(); SimpleDateFormat sdf = map.get(pattern); if (sdf == null) { sdf = new SimpleDateFormat(pattern); map.put(pattern, sdf); } return sdf; } /** * 獲取當前日期 * * @param pattern * @return */ public static String getNow(PatternEnum pattern) { SimpleDateFormat sdf = getSdf(pattern.getName()); return sdf.format(new Date()); } /** * 獲取過去一天的日期 * * @param pattern * @return */ public static Date getPastOneDay() { Calendar c = Calendar.getInstance(); c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH, -1); return c.getTime(); } /** * 獲取從指定日期起,半個小時以前的日期 * * @return */ public static Date getPastHalfHour() { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); int minute = calendar.get(Calendar.MINUTE); calendar.set(Calendar.MINUTE, minute - 30); return calendar.getTime(); } /** * 獲取兩個日期之間的天數 * * @param before * @param after * @return */ public static long getDistanceTwoDate(Date before, Date after) { long beforeTime = before.getTime(); long afterTime = after.getTime(); return (afterTime - beforeTime) / (1000 * 60 * 60 * 24); } /** * string轉化為指定模板的date * * @param str * @param pattern * @return */ public static Date stringToDate(String str, PatternEnum pattern) { try { SimpleDateFormat sdf = getSdf(pattern.getName()); return sdf.parse(str); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * date類型轉化為指定模板的string * @param date * @param pattern * @return */ public static String dateToString(Date date,PatternEnum pattern){ SimpleDateFormat sdf = getSdf(pattern.getName()); return sdf.format(date); } /** * 獲取某個date的年份 * @param date * @return */ public static int getYear(Date date){ Calendar c=Calendar.getInstance(); c.setTime(date); return c.get(Calendar.YEAR); } /** * 獲取某個date的月份 * @param date * @return */ public static int getMonth(Date date){ Calendar c=Calendar.getInstance(); c.setTime(date); return c.get(Calendar.MONTH)+1; } /** * 獲取某個date的day * @param date * @return */ public static int getDayOfMonth(Date date){ Calendar c=Calendar.getInstance(); c.setTime(date); return c.get(Calendar.DAY_OF_MONTH); } /** * 判斷字符串是否是指定的格式 * @param date * @param pattern * @return */ public static boolean isDatePattern(String date, PatternEnum pattern) { SimpleDateFormat sdf = getSdf(pattern.getName()); try { sdf.setLenient(false); sdf.parse(date); return true; } catch (Exception e) { return false; } } /** * 獲取兩個時間的時間差 * @param before * @param after * @param flag 0秒,1分,2時,3天 * @return */ public static int getDifferentNum(Date before,Date after,int flag){ if(before==null||after==null){ return 0; } long timeInterval=after.getTime()-before.getTime(); switch (flag) { case 0: return (int) (timeInterval/1000);//秒 case 1: return (int) (timeInterval/(60*1000));//分 case 2: return (int) timeInterval/(60*60*1000);//時 case 3: return (int) timeInterval/(60*60*1000*24);//天 } return 0; } }

浙公網安備 33010602011771號