/**
*/ public class DateUtils extends org.apache.commons.lang.time.DateUtils {
/**
- 将日值字符串转换成Date类型
- @param str
-
参数字符串
- @param format
-
格式
- @return Date */ public static Date parseDateString(String str, String format) { if (str == null || str.equals("")) { return null; } Date dt = null; try { DateFormat df = new SimpleDateFormat(format); dt = df.parse(str);
} catch (Exception pe) { }
return dt; }
/**
- 调整时间 将指定日期调整 时间
- @param date
-
参数日期
- @param field
-
自定字段域
- @param amount
-
调整数量
- @param format
-
字符串格式
- @return String */ public static Date getAdjustDate(Date date, int field, int amount) { if (date == null) { return null; } Calendar can = Calendar.getInstance(); can.setTime(date); can.add(field, amount); Date newDate = can.getTime(); return newDate; }
/**
- 取2个时间相差的天数
- @param date1
- @param date2
- @param isAbs
-
true:取绝对值 false:差值可能是负数
- @return
- @throws Exception */ public static long getBetweenDiffDay(Date date1, Date date2, boolean isAbs) throws Exception { long date1Value = date1.getTime(); long date2Value = date2.getTime(); long diff = (date1Value - date2Value) / (24 * 3600 * 1000); if (isAbs) { return Math.abs(diff); } else { return diff; }
}
/**
- 取2个时间相差的小时数
- @param date1
- @param date2
- @param isAbs
-
true:取绝对值 false:差值可能是负数
- @return
- @throws Exception */ public static long getBetweenDiffHour(Date date1, Date date2, boolean isAbs) throws Exception { long date1Value = date1.getTime(); long date2Value = date2.getTime(); long diff = (date1Value - date2Value) / (3600 * 1000); if (isAbs) { return Math.abs(diff); } else { return diff; } }
/**
- 取2个时间相差的分钟数
- @param date1
- @param date2
- @param isAbs
-
true:取绝对值 false:差值可能是负数
- @return
- @throws Exception */ public static long getBetweenDiffMinute(Date date1, Date date2, boolean isAbs) throws Exception { long date1Value = date1.getTime(); long date2Value = date2.getTime(); long diff = (date1Value - date2Value) / (60 * 1000); if (isAbs) { return Math.abs(diff); } else { return diff; } }
/**
- 获取两个时间相差剩余的天数小时分钟秒
- @param date1
- @param date2
- @return
- @author : weihui
- @createTime : 2015年5月8日 下午4:44:17 */ public static Map<String,Integer> getBetweenDiffRemanentInfo(Date date1, Date date2){ long time = date1.getTime() - date2.getTime(); int day = (int) (time / (24 * 60 * 60 * 1000l)); int hour = (int) ((time - day * 24 * 60 * 60 * 1000l)/ (60 * 60 * 1000l)); int minute = (int) ((time - day * 24 * 60 * 60 * 1000l - hour * 60 * 60 * 1000l) / (60 * 1000l)); int second = (int) ((time - day * 24 * 60 * 60 * 1000l - hour * 60 * 60 * 1000l - minute * 60 * 1000l) / 1000l); Map<String,Integer> map = new HashMap<String, Integer>(); map.put("day", day); map.put("hour", hour); map.put("minute", minute); map.put("second", second); return map; }
public static void main(String[] args) throws Exception { Date date1 = new Date(); Date date2 = DateFormatUtils.format("2015-05-08 16:35", "yyyy-MM-dd HH:mm"); System.out.println(getBetweenDiffDay(date1, date2, true)); System.out.println(getBetweenDiffHour(date1, date2, true)); System.out.println(getBetweenDiffMinute(date1, date2, true)); }
/**
- 得到指定日期所在月的最后一天,如果给定时间是月末,返回值应该是下个月末
- @param date
- @return Date */ public static Date getMonthEnd(Date date) { Calendar can = Calendar.getInstance(); can.setTime(date); // 说明给定时间是月末,返回值应该是下个月末 if (can.get(Calendar.DAY_OF_MONTH) == can.getActualMaximum(Calendar.DAY_OF_MONTH)) { can.add(Calendar.MONTH, 1); } can.set(Calendar.DAY_OF_MONTH, can.getActualMaximum(Calendar.DAY_OF_MONTH)); can.set(Calendar.HOUR_OF_DAY, 23); can.set(Calendar.MINUTE, 59); can.set(Calendar.SECOND, 59);
return can.getTime(); }
/**
- 得到指定日期所在月的第一天的0点0分0秒
- @param date
- @return Date */ public static Date getCurrentMonthBegin(Date date) { Calendar can = Calendar.getInstance(); can.setTime(date); // 说明给定时间是月末,返回值应该是下个月末
can.set(Calendar.DAY_OF_MONTH, can.getActualMinimum(Calendar.DAY_OF_MONTH)); can.set(Calendar.HOUR_OF_DAY, 00); can.set(Calendar.MINUTE, 00); can.set(Calendar.SECOND, 00);
return can.getTime(); }
/**
- 得到指定日期所在月的第最后天的23点59分59秒
- @param date
- @return Date */ public static Date getCurrentMonthEnd(Date date) { Calendar can = Calendar.getInstance(); can.setTime(date); // 说明给定时间是月末,返回值应该是下个月末
can.set(Calendar.DAY_OF_MONTH, can.getActualMaximum(Calendar.DAY_OF_MONTH)); can.set(Calendar.HOUR_OF_DAY, 23); can.set(Calendar.MINUTE, 59); can.set(Calendar.SECOND, 59);
return can.getTime(); }
/**
- 得到今天所在月的最后一天, 如果给定时间是月末,返回值应该是下个月末
- @return Date */ public static Date getMonthEnd() { Date date = new Date(); Calendar can = Calendar.getInstance(); can.setTime(date); // 说明给定时间是月末,返回值应该是下个月末 if (can.get(Calendar.DAY_OF_MONTH) == can.getActualMaximum(Calendar.DAY_OF_MONTH)) { can.add(Calendar.MONTH, 1); } can.set(Calendar.DAY_OF_MONTH, can.getActualMaximum(Calendar.DAY_OF_MONTH)); can.set(Calendar.HOUR_OF_DAY, 23); can.set(Calendar.MINUTE, 59); can.set(Calendar.SECOND, 59);
return can.getTime(); }
/**
- 得到指定日期所在周的的最后一天,如果传入的时间已经是周末,返回值应该是下个周末
- @param date
- @return Date */ public static Date getWeekEnd(Date date) { Calendar can = Calendar.getInstance(); can.setTime(date); // 说明传入的时间已经是周末,返回值应该是下个周末 if (1 == can.get(Calendar.DAY_OF_WEEK)) { can.add(Calendar.WEEK_OF_MONTH, 1); } can.set(Calendar.DAY_OF_WEEK, can.getActualMaximum(Calendar.DAY_OF_WEEK)); can.set(Calendar.HOUR_OF_DAY, 23); can.set(Calendar.MINUTE, 59); can.set(Calendar.SECOND, 59); can.add(Calendar.DAY_OF_MONTH, 1); return can.getTime(); }
/**
- 得到指定日期第二天的结束时间
- @param date
- @return Date */ public static Date getTomorrowEnd(Date date) { Calendar can = Calendar.getInstance(); can.setTime(date); can.set(Calendar.HOUR_OF_DAY, 23); can.set(Calendar.MINUTE, 59); can.set(Calendar.SECOND, 59); can.add(Calendar.DAY_OF_MONTH, 1); return can.getTime(); }
/**
- 获得指定天的昨天的最后时间
- @param date
- @return */ public static Date getYesterdayEnd(Date date) { Calendar can = Calendar.getInstance(); can.setTime(date); can.set(Calendar.HOUR_OF_DAY, 23); can.set(Calendar.MINUTE, 59); can.set(Calendar.SECOND, 59); can.add(Calendar.DAY_OF_MONTH, -1); return can.getTime(); }
public static Date getYesterdayStart(Date date) { Calendar can = Calendar.getInstance(); can.setTime(date); can.set(Calendar.HOUR_OF_DAY, 00); can.set(Calendar.MINUTE, 00); can.set(Calendar.SECOND, 00); can.add(Calendar.DAY_OF_MONTH, -1); return can.getTime(); }
/**
- 设置特定时间的小时偏移量和天数偏移量。
- @param date
-
指定的天
- @param hourOffset
-
小时偏移量 正数为增加小时,负数为减去小时
- @param dateOffset
-
天数偏移量 正数为增加天 ,负数为减去天
- @param startOrEnd
-
0为开始时间忽略小时偏移量,例:2008-01-10 00:00:00 1为结束时间忽略小时偏移量,例:2008-01-10
-
23:59:59 2为指定时间的偏移量时间 例:偏移量为-1 指定时间为2008-01-10 00:00:00
-
返回时间为:2008-01-09 23:00:00
- @return */ public static Date getAppointDateByOffset(Date date, int hourOffset, int dateOffset, int startOrEnd) { Calendar can = Calendar.getInstance(); can.setTime(date); int hourOfDay = hourOffset; int minute = 0; int second = 0; if (startOrEnd == 1) { hourOfDay = 23; minute = 59; second = 59; } else if (startOrEnd == 2) { hourOfDay = hourOffset; minute = 0; second = 0; }
can.set(Calendar.HOUR_OF_DAY, hourOfDay); can.set(Calendar.MINUTE, minute); can.set(Calendar.SECOND, second); can.add(Calendar.DAY_OF_MONTH, dateOffset); return can.getTime(); }
/**
- 得到现在时间所在周的的最后一天,如果传入的时间已经是周末,返回值应该是下个周末
- @return Date */ public static Date getWeekEnd() { Date date = new Date(); Calendar can = Calendar.getInstance(); can.setTime(date); // 说明传入的时间已经是周末,返回值应该是下个周末 if (1 == can.get(Calendar.DAY_OF_WEEK)) { can.add(Calendar.WEEK_OF_MONTH, 1); } can.set(Calendar.DAY_OF_WEEK, can.getActualMaximum(Calendar.DAY_OF_WEEK)); can.set(Calendar.HOUR_OF_DAY, 23); can.set(Calendar.MINUTE, 59); can.set(Calendar.SECOND, 59); can.add(Calendar.DAY_OF_MONTH, 1); return can.getTime(); }
/**
- 取得偏移时间
- @param nowDate
-
date偏移时间;
- @param day
-
偏移天数
- @param status
-
为分钟量 0是返回时间为00:00:00 ;1是返回为23:59:59; 2返回原始
- @return */ public static Date getOffsetTime(Date nowDate, int day, int status) { Calendar curCalendar = Calendar.getInstance(); curCalendar.setTime(nowDate); long t = curCalendar.getTimeInMillis() + day * 24 * 60 * 60 * 1000L; curCalendar.setTimeInMillis(t); if (status == 0) { curCalendar.set(Calendar.HOUR_OF_DAY, 0); curCalendar.set(Calendar.MINUTE, 0); curCalendar.set(Calendar.SECOND, 0); } else if (status == 1) { curCalendar.set(Calendar.HOUR_OF_DAY, 23); curCalendar.set(Calendar.MINUTE, 59); curCalendar.set(Calendar.SECOND, 59); } return curCalendar.getTime(); }
/**
- 返回指定天的开始
- @param date
- @return */ public static Date getCurrentDayBegin(Date date) { Calendar can = Calendar.getInstance(); can.setTime(date); can.set(Calendar.HOUR_OF_DAY, 00); can.set(Calendar.MINUTE, 00); can.set(Calendar.SECOND, 00); return can.getTime(); }
/**
- 返回指定天的结束
- @param date
- @return */ public static Date getCurrentDayEnd(Date date) { Calendar can = Calendar.getInstance(); can.setTime(date); can.set(Calendar.HOUR_OF_DAY, 23); can.set(Calendar.MINUTE, 59); can.set(Calendar.SECOND, 59); return can.getTime(); }
/**
- 获取指定日期,指定偏移月份的日期
- @param date
- @param month
- @return */ public static Date getOffsetTimeByMonth(Date date, int month) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int sMonth = calendar.get(Calendar.MONTH); calendar.set(Calendar.MONTH, sMonth - month); return calendar.getTime(); }
/**
- 获取时间差,返回固定格式yyyy_M_d
- @param startTm
- @param endTm
- @return */ public static List<String> getDateFix(long startTm, long endTm) { List<String> ret = new ArrayList<String>();
if (startTm > endTm) return ret;
Calendar startCal = new GregorianCalendar(TimeZone.getTimeZone("GMT+8")); startCal.setTimeInMillis(startTm); // startCal.set(Calendar.DAY_OF_YEAR, 1);
Calendar endCal = new GregorianCalendar(TimeZone.getTimeZone("GMT+8")); endCal.setTimeInMillis(endTm); // endCal.set(Calendar.DAY_OF_YEAR, 2);
for (; startCal.before(endCal); startCal.add(Calendar.DAY_OF_YEAR, 1)) { String s = startCal.get(Calendar.YEAR) + "" + (startCal.get(Calendar.MONTH) + 1) + ""
- (startCal.get(Calendar.DATE)); ret.add(s); }
return ret; }
/**
- 将一个java.util.Date类型变量依指定格式转换为字符串
- @param d
- @param format
- @return */ public static String dateToString(Date d, String format) { if (d == null) return null; else return new SimpleDateFormat(format).format(d); }
//将时间戳转换为int类型的日期格式 20160601 public static int timeTo_yyyyMMdd(long time){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); return Integer.parseInt(dateFormat.format(time)); }
//将时间转换成String类型 public static String dateToStringAccurateToDay(Date date){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); return dateFormat.format(date); } //将时间戳转换成String类型 public static String timeToStringAccurateToSecond(long time){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(time); return dateFormat.format(date); } }