首先需要这两个jdk自带工具类
java.util.Calendar; java.util.Date;
/** * 获得指定日期的后N天 * @param * @return */ public static Date getSpecifiedDayAfter(Date date,int num){ Calendar c = Calendar.getInstance(); c.setTime(date); int day=c.get(Calendar.DATE); c.set(Calendar.DATE,day+num); return c.getTime(); }
/** * 获得指定日期的前N天 * * @param * @return */ public static Date getSpecifiedDayBefore(Date date, int num) { Calendar c = Calendar.getInstance(); c.setTime(date); int day = c.get(Calendar.DATE); c.set(Calendar.DATE, day - num); return c.getTime(); }
/** * 比较两个时间大小 * @param first * @param second * @return * <0: first<second * =0: first=second * >0: first>second */ public static int compareTwoDate(Date first, Date second){ Calendar c1= Calendar.getInstance(); Calendar c2= Calendar.getInstance(); c1.setTime(first); c2.setTime(second); return c1.compareTo(c2); }
/** * 取得当前日期所在周的第一天 * * @param date * @return */ public static Date getFirstDayOfWeek(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday return c.getTime (); }
/** * 取得当前日期所在周的最后一天 * * @param date * @return */ public static Date getLastDayOfWeek(Date date) { Calendar c = new GregorianCalendar(); c.setFirstDayOfWeek(Calendar.MONDAY); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday return c.getTime(); }
/** * 计算日期增加或减少小时数后的日期 * @param date * @param i 为负表示减多少小时 * @return */ public static Date addHH(Date date,int i){ if(date==null)return null; Calendar c = new GregorianCalendar(); c.setTime(date); c.add(Calendar.HOUR, i); return c.getTime(); }
/** * 计算日期增加或减少分钟数后的日期 * @param date * @param i 为负表示减多少分钟 * @return */ public static Date addMM(Date date,int i){ if(date==null)return null; Calendar c = new GregorianCalendar(); c.setTime(date); c.add(Calendar.MINUTE, i); return c.getTime(); }
/** * 计算日期增加或减少秒数后的日期 * @param date * @param i 为负表示减多少秒 * @return */ public static Date addSS(Date date,int i){ if(date==null)return null; Calendar c = new GregorianCalendar(); c.setTime(date); c.add(Calendar.SECOND, i); return c.getTime(); } /** * 计算日期增加减少天数后的日期 * @param date * @param i 为负表示减多少天 * @return */ public static Date addDate(Date date,int i){ if(date==null)return null; Calendar c = new GregorianCalendar(); c.setTime(date); c.add(Calendar.DATE, i); return c.getTime(); } /** * 计算日期增加减少月数后的日期 * @param date * @param i 为负表示减多少月 * @return */ public static Date addMonth(Date date,int i){ if(date==null)return null; Calendar c = new GregorianCalendar(); c.setTime(date); c.add(Calendar.MONTH, i); return c.getTime(); }
/** * 计算日期增加减少年数后的日期 * @param date * @param i 为负表示减多少年 * @return */ public static Date addYear(Date date,int i){ if(date==null)return null; Calendar c = new GregorianCalendar(); c.setTime(date); c.add(Calendar.YEAR, i); return c.getTime(); }
/** * 获得当前时间字符串 * @param formatStr 日期格式 * @return string yyyy-MM-dd */ public static String getNowDateStr(String formatStr) { SimpleDateFormat format = new SimpleDateFormat(formatStr); return format.format(getNowDate()); } /** * 获得系统当前时间 * @return Date */ public static Date getNowDate(){ Calendar c = Calendar.getInstance(); return c.getTime(); }
/** * 把日期按照指定格式的转化成字符串 * @param date 日期对象 * @param formatStr 日期格式 * @return 字符串式的日期,格式为:yyyy-MM-dd HH:mm:ss */ public static String getDateTimeToString(Date date,String formatStr) { SimpleDateFormat format = new SimpleDateFormat(formatStr); return format.format(date); }
/** * 获得当前时间的i分钟后(或前,用负数表示)的时间 * @param i * @return */ public static String addMM(int i){ Date currTime = addMM(getNowDate(),i); SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); return format.format(currTime); } /** * 获得某个时间的i分钟后(或前,用负数表示)的时间 * @param i * @return */ public static String dateAddMM(Date date, int i){ Date currTime = addMM(date,i); SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); return format.format(currTime); }
/** * @param date 获取给定日期的起初时间 XX-XX-XX 00:00:00 * @return date */ public static Date getBegin(Date date){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); return calendar.getTime(); } /** * @param date 获取给定日期的结束时间 XX-XX-XX 23:59:59 * @return date */ public static Date getEnd(Date date){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); return calendar.getTime(); }
/** * 计算两个日期之间的相差的天数. 计算方式:second - first * @param smdate 较小的时间 * @param bdate 较大的时间 * @return 相差的天数 */ public static int daysBetween( Date smdate,Date bdate ){ int result = 0; SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); try{ smdate=sdf.parse(sdf.format(smdate)); bdate=sdf.parse(sdf.format(bdate)); Calendar cal = Calendar.getInstance(); cal.setTime(smdate); long time1 = cal.getTimeInMillis(); cal.setTime(bdate); long time2 = cal.getTimeInMillis(); long between_days=(time2-time1)/(1000*3600*24); result = Integer.parseInt(String.valueOf(between_days)); } catch(ParseException e){ log.error("日期转化异常",e); } catch(Exception e){ log.error("格式转化异常",e); } return result ; }
/** * 计算两个日期之间的相差的秒数. 计算方式:second - first * @param smdate 较小的时间 * @param bdate 较大的时间 * @return 相差的秒数 */ public static int secondsBetween( Date smdate, Date bdate ){ int result = 0; try{ Calendar cal = Calendar.getInstance(); cal.setTime(smdate); long time1 = cal.getTimeInMillis(); cal.setTime(bdate); long time2 = cal.getTimeInMillis(); long between_min=(time2-time1)/1000; result = Integer.parseInt(String.valueOf(between_min)); } catch(Exception e){ log.error("格式转化异常",e); } return result ; }
/** * 将时间戳转换为date * @param seconds * @return */ public static Date getTimestampToDate(long seconds ){ Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis( seconds ); return calendar.getTime() ; } /** * 将date转时间戳 * @param date * @return */ public static long getDateToTimestamp(Date date) { long unixTimestamp = date.getTime() / 1000; return unixTimestamp; }
/** * 判断两个日期是否在同一个月份 * * @param date1 * @param date2 * @return */ @SuppressWarnings("deprecation") public static boolean inSameMonth(Date date1, Date date2) { if (date1 == null || date2 == null) { return false; } if (date1.getYear() == date2.getYear() && date1.getMonth() == date2.getMonth()) { return true; } else { return false; } } /** * 根据日期取得星期几 * * @param date * @return */ public static String getWeek(Date date){ String[] weekArr = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; Calendar cal = Calendar.getInstance(); cal.setTime(date); int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1; if(week_index < 0 || week_index > 6){ return ""; } return weekArr[week_index]; }