//===========================DateUtils============================================= public class DateUtils { public static Date date = null; public static DateFormat dateFormat = null; /** * 功能描述:格式化输出日期 * * @param date * Date 日期 * @param format * String 格式 * @return 返回字符型日期 */ public static String format(Date date, String format) { String result = ""; try { if (date != null) { dateFormat = new SimpleDateFormat(format); result = dateFormat.format(date); } } catch (Exception e) { } return result; } public static Date dateToDay(Date date,String format){ Date retDate =null; try { if(date !=null){ SimpleDateFormat dateFormat = new SimpleDateFormat(format); String result = dateFormat.format(date); retDate=dateFormat.parse(result); } } catch (ParseException e) { } return retDate; } /** * 将字符串转化为时间 * @param date * @param fromat * @return * @throws ParseException */ public static Date strParseDate(String date ,String fromat) throws ParseException { Date retDate = new SimpleDateFormat(fromat).parse(date); return retDate; } /** * 功能描述:返回字符型日期时间 * @author chenhui * @param date * Date 日期 * @return 返回字符型日期时间 格式自定义 */ public static String getOneDateTime(Date date,String mode) { return format(date, mode); } //获取当天的开始时间 public static Date getDayBegin() { Calendar cal = new GregorianCalendar(); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); return cal.getTime(); } //获取当天的结束时间 public static Date getDayEnd() { Calendar cal = new GregorianCalendar(); cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 59); return cal.getTime(); } //获取昨天的开始时间 public static Date getBeginDayOfYesterday() { Calendar cal = new GregorianCalendar(); cal.setTime(getDayBegin()); cal.add(Calendar.DAY_OF_MONTH, -1); return cal.getTime(); } //获取昨天的结束时间 public static Date getEndDayOfYesterDay() { Calendar cal = new GregorianCalendar(); cal.setTime(getDayEnd()); cal.add(Calendar.DAY_OF_MONTH, -1); return cal.getTime(); } //获取明天的开始时间 public static Date getBeginDayOfTomorrow() { Calendar cal = new GregorianCalendar(); cal.setTime(getDayBegin()); cal.add(Calendar.DAY_OF_MONTH, 1); return cal.getTime(); } //获取明天的结束时间 public static Date getEndDayOfTomorrow() { Calendar cal = new GregorianCalendar(); cal.setTime(getDayEnd()); cal.add(Calendar.DAY_OF_MONTH, 1); return cal.getTime(); } //获取本周的开始时间 public static Date getBeginDayOfWeek() { Date date = new Date(); if (date == null) { return null; } Calendar cal = Calendar.getInstance(); cal.setTime(date); int dayofweek = cal.get(Calendar.DAY_OF_WEEK); if (dayofweek == 1) { dayofweek += 7; } cal.add(Calendar.DATE, 2 - dayofweek); return getDayStartTime(cal.getTime()); } //获取本周的结束时间 public static Date getEndDayOfWeek(){ Calendar cal = Calendar.getInstance(); cal.setTime(getBeginDayOfWeek()); cal.add(Calendar.DAY_OF_WEEK, 6); Date weekEndSta = cal.getTime(); return getDayEndTime(weekEndSta); } //获取本月的开始时间 public static Date getBeginDayOfMonth() { Calendar calendar = Calendar.getInstance(); calendar.set(getNowYear(), getNowMonth() - 1, 1); return getDayStartTime(calendar.getTime()); } //获取本月的结束时间 public static Date getEndDayOfMonth() { Calendar calendar = Calendar.getInstance(); calendar.set(getNowYear(), getNowMonth() - 1, 1); int day = calendar.getActualMaximum(5); calendar.set(getNowYear(), getNowMonth() - 1, day); return getDayEndTime(calendar.getTime()); } //获取本年的开始时间 public static Date getBeginDayOfYear() { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, getNowYear()); // cal.set cal.set(Calendar.MONTH, Calendar.JANUARY); cal.set(Calendar.DATE, 1); return getDayStartTime(cal.getTime()); } //获取本年的结束时间 public static Date getEndDayOfYear() { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, getNowYear()); cal.set(Calendar.MONTH, Calendar.DECEMBER); cal.set(Calendar.DATE, 31); return getDayEndTime(cal.getTime()); } //获取某个日期的开始时间 public static Timestamp getDayStartTime(Date d) { Calendar calendar = Calendar.getInstance(); if(null != d) calendar.setTime(d); calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0); calendar.set(Calendar.MILLISECOND, 0); return new Timestamp(calendar.getTimeInMillis()); } //获取某个日期的结束时间 public static Timestamp getDayEndTime(Date d) { Calendar calendar = Calendar.getInstance(); if(null != d) calendar.setTime(d); calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59); calendar.set(Calendar.MILLISECOND, 999); return new Timestamp(calendar.getTimeInMillis()); } //获取今年是哪一年 public static Integer getNowYear() { Date date = new Date(); GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); gc.setTime(date); return Integer.valueOf(gc.get(1)); } //获取本月是哪一月 public static int getNowMonth() { Date date = new Date(); GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); gc.setTime(date); return gc.get(2) + 1; } //两个日期相减得到的天数 public static int getDiffDays(Date beginDate, Date endDate) { if (beginDate == null || endDate == null) { throw new IllegalArgumentException("getDiffDays param is null!"); } long diff = (endDate.getTime() - beginDate.getTime()) / (1000 * 60 * 60 * 24); int days = new Long(diff).intValue(); return days; } //两个日期相减得到的毫秒数 public static long dateDiff(Date beginDate, Date endDate) { long date1ms = beginDate.getTime(); long date2ms = endDate.getTime(); return date2ms - date1ms; } //获取两个日期中的最大日期 public static Date max(Date beginDate, Date endDate) { if (beginDate == null) { return endDate; } if (endDate == null) { return beginDate; } if (beginDate.after(endDate)) { return beginDate; } return endDate; } //获取两个日期中的最小日期 public static Date min(Date beginDate, Date endDate) { if (beginDate == null) { return endDate; } if (endDate == null) { return beginDate; } if (beginDate.after(endDate)) { return endDate; } return beginDate; } //返回某月该季度的第一个月 public static Date getFirstSeasonDate(Date date) { final int[] SEASON = { 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4 }; Calendar cal = Calendar.getInstance(); cal.setTime(date); int sean = SEASON[cal.get(Calendar.MONTH)]; cal.set(Calendar.MONTH, sean * 3 - 3); return cal.getTime(); } //返回某个日期下几天的日期 public static Date getNextDay(Date date, int i) { Calendar cal = new GregorianCalendar(); cal.setTime(date); cal.set(Calendar.DATE, cal.get(Calendar.DATE) + i); return cal.getTime(); } //返回某个日期前几天的日期 public static Date getFrontDay(Date date, int i) { Calendar cal = new GregorianCalendar(); cal.setTime(date); cal.set(Calendar.DATE, cal.get(Calendar.DATE) - i); return cal.getTime(); } //获取某年某月到某年某月按天的切片日期集合(间隔天数的集合) public static List getTimeList(int beginYear, int beginMonth, int endYear, int endMonth, int k) { List list = new ArrayList(); if (beginYear == endYear) { for (int j = beginMonth; j <= endMonth; j++) { list.add(getTimeList(beginYear, j, k)); } } else { { for (int j = beginMonth; j < 12; j++) { list.add(getTimeList(beginYear, j, k)); } for (int i = beginYear + 1; i < endYear; i++) { for (int j = 0; j < 12; j++) { list.add(getTimeList(i, j, k)); } } for (int j = 0; j <= endMonth; j++) { list.add(getTimeList(endYear, j, k)); } } } return list; } //获取某年某月按天切片日期集合(某个月间隔多少天的日期集合) public static List getTimeList(int beginYear, int beginMonth, int k) { List list = new ArrayList(); Calendar begincal = new GregorianCalendar(beginYear, beginMonth, 1); int max = begincal.getActualMaximum(Calendar.DATE); for (int i = 1; i < max; i = i + k) { list.add(begincal.getTime()); begincal.add(Calendar.DATE, k); } begincal = new GregorianCalendar(beginYear, beginMonth, max); list.add(begincal.getTime()); return list; } /** * 得到几天前的时间 * * @param d * @param day * @return */ public static Date getDateBefore(Date d, int day) { Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.DATE, now.get(Calendar.DATE) - day); return now.getTime(); } /** * 得到几天后的时间 * * @param d * @param day * @return */ public static Date getDateAfter(Date d, int day) { Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.DATE, now.get(Calendar.DATE) + day); return now.getTime(); } //判断选择的日期是否是本周 public static boolean isThisWeek(long time) { Calendar calendar = Calendar.getInstance(); int currentWeek = calendar.get(Calendar.WEEK_OF_YEAR); calendar.setTime(new Date(time)); int paramWeek = calendar.get(Calendar.WEEK_OF_YEAR); if(paramWeek==currentWeek){ return true; } return false; } //判断选择的日期是否是今天 public static boolean isToday(long time) { return isThisTime(time,"yyyy-MM-dd"); } //判断选择的日期是否是本月 public static boolean isThisMonth(long time) { return isThisTime(time,"yyyy-MM"); } private static boolean isThisTime(long time,String pattern) { Date date = new Date(time); SimpleDateFormat sdf = new SimpleDateFormat(pattern); String param = sdf.format(date);//参数时间 String now = sdf.format(new Date());//当前时间 if(param.equals(now)){ return true; } return false; } //判断当前时间是否在时间段内 public static boolean isTimeSlot(Date now,Integer startTime,Integer endTime) { Calendar calendar = Calendar.getInstance(); calendar.setTime(now); Integer nowHour = calendar.get(Calendar.HOUR_OF_DAY); if (nowHour >= startTime && nowHour <= endTime){ return true; } else { return false; } } }
//===========================DateTimeTool=============================================
public class DateTimeTool { /** * createTime:2017/2/28 * Description:取北京时间 * @param str:时间格式 * @return 时间 */ public static String getBeijingTime(String str){ return getFormatedDateString(8,str); } /** * createTime:2017/2/28 * timeZoneOffset表示时区,如中国一般使用东八区,因此timeZoneOffset就是8 * @param timeZoneOffset:时区 str:时间格式 * @return */ public static String getFormatedDateString(float timeZoneOffset,String str){ if (timeZoneOffset > 13 || timeZoneOffset < -12) { timeZoneOffset = 0; } int newTime=(int)(timeZoneOffset * 60 * 60 * 1000); TimeZone timeZone; String[] ids = TimeZone.getAvailableIDs(newTime); if (ids.length == 0) { timeZone = TimeZone.getDefault(); } else { timeZone = new SimpleTimeZone(newTime, ids[0]); } SimpleDateFormat sdf = new SimpleDateFormat(str); sdf.setTimeZone(timeZone); return sdf.format(new Date()); } /** createTime:2017/2/28 获取当前时间的前后几天 @param number:几天 str :时间格式 @return String */ public static String getDateByNumber(int number,String str) throws ParseException { Calendar calendar = Calendar.getInstance(); String date1 = getBeijingTime(str); SimpleDateFormat sdf = new SimpleDateFormat(str); Date date = sdf.parse(date1); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, number); date = calendar.getTime(); return sdf.format(date); } /** * createTime: 2017/2/28 * 获取某个时间和当前时间的 * @param time String * @return long */ public static long getdisTime(String time) throws ParseException{ long dis = 0; String now = getBeijingTime("yyyyMMddHHmm"); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm"); long nowtime = sdf.parse(now).getTime(); long resTime = sdf.parse(time).getTime(); dis = resTime-nowtime; return dis; } public static long getdisTime1(String time) throws ParseException{ long dis = 0; String now = getBeijingTime("yyyyMMddHHmm"); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm"); long nowtime = sdf.parse(now).getTime(); long resTime = sdf.parse(time).getTime(); dis = nowtime-resTime; return dis; } public static String getWeekOfDate(Date dt) { String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; Calendar cal = Calendar.getInstance(); cal.setTime(dt); int w = cal.get(Calendar.DAY_OF_WEEK) - 1; if (w < 0) w = 0; return weekDays[w]; } }