package list_practise; import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * @ClassName DateUtils * @Description TODO 日期工具类 * @Author zhangjiuyang * @Date 2019/8/13 10:34 * @Version 1.0 **/ public class DateUtils { public static final String YMD = "yyyy-MM-dd"; public static final String YMDHMS = "yyyy-MM-dd HH:mm:ss"; public static final String KEY_INT_STARTTIME = "intStarttime"; public static final String KEY_STR_STARTTIME = "strStarttime"; public static final String KEY_INT_ENDTIME = "intEndtime"; public static final String KEY_STR_ENDTIME = "strEndtime"; public DateUtils() { } /** * @Author zhangjiuyang * @Description //TODO 获取当前时间的时间戳 * @Date 16:53 2019/9/3 * @Param [] * @return int **/ public static int getCurrentTimeIntValue() { int sencends = (int)(System.currentTimeMillis() / 1000L); return sencends; } /** * @Author zhangjiuyang * @Description //TODO 获取格式化的时间戳 * @Date 16:54 2019/9/3 * @Param [time, format] * @return int **/ public static int getAppointedTimeIntValue(String time, String format) throws ParseException { SimpleDateFormat f = new SimpleDateFormat(format); Date date = f.parse(time); return (int)(date.getTime() / 1000L); } /** * @Author zhangjiuyang * @Description //TODO 根据时间戳获取日期 * @Date 16:55 2019/9/3 * @Param [timeStamp, format] * @return java.util.Date **/ public static Date getDateByTimeStamp(int timeStamp, String format) throws ParseException { SimpleDateFormat f = new SimpleDateFormat(format); String d = f.format((long)timeStamp * 1000L); Date date = f.parse(d); return date; } /** * @Author zhangjiuyang * @Description //TODO 根据时间戳获取日期字符串(秒) * @Date 16:55 2019/9/3 * @Param [timeStamp, format] * @return java.lang.String **/ public static String getDateStringByTimeStamp(Integer timeStamp, String format) throws ParseException { SimpleDateFormat f = new SimpleDateFormat(format); String d = ""; if (timeStamp != null) { d = f.format((long)timeStamp * 1000L); } return d; } /** * @Author zhangjiuyang * @Description //TODO 根据时间戳获取日期字符串(毫秒) * @Date 16:56 2019/9/3 * @Param [timeStamp, format] * @return java.lang.String **/ private static String getDateStringByTimeStamp(Long timeStamp, String format) throws ParseException { SimpleDateFormat f = new SimpleDateFormat(format); String d = ""; if (timeStamp != null) { d = f.format((long)timeStamp); } return d; } public static String formatDate(Object datetime, String format) throws Exception{ SimpleDateFormat f = new SimpleDateFormat(format); if (datetime instanceof Date) { return f.format((Date)datetime); } else if (datetime instanceof Long) { return f.format(new Date((Long)datetime)); } else { throw new Exception("param datetime must be a Date or Long."); } } public static int getTimesmorning(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.set(11, 0); cal.set(13, 0); cal.set(12, 0); cal.set(14, 0); return (int)(cal.getTimeInMillis() / 1000L); } public static int getTimesnight(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.set(11, 23); cal.set(13, 59); cal.set(12, 59); cal.set(14, 999); return (int)(cal.getTimeInMillis() / 1000L); } public static String formatDateToString(Date date, String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); return date == null ? "" : sdf.format(date); } public static Map<String, Object> formatStarttimeAndEndtime(String format, String strStarttime, String strEndtime, Integer intStarttime, Integer intEndtime) throws ParseException { Map<String, Object> timeMap = new HashMap(); if (format == null) { timeMap.put("strStarttime", (Object)null); timeMap.put("intStarttime", (Object)null); timeMap.put("strEndtime", (Object)null); timeMap.put("intEndtime", (Object)null); return timeMap; } else { boolean ymd = false; boolean ymdhms = false; format = format.trim(); int formatLen = format.length(); int ymdLen = "yyyy-MM-dd".length(); int ymdhmsLen = "yyyy-MM-dd HH:mm:ss".length(); if (formatLen == ymdLen) { ymd = true; } else if (formatLen == ymdhmsLen) { ymdhms = true; } if (strStarttime != null && "".equals(strStarttime.trim())) { strStarttime = null; } if (strEndtime != null && "".equals(strEndtime.trim())) { strEndtime = null; } if (intStarttime != null && intStarttime <= 0) { intStarttime = null; } if (intEndtime != null && intEndtime <= 0) { intEndtime = null; } Date currentTime = new Date(); int intCurrentTime = (int)(currentTime.getTime() / 1000L); int intTodayTimesmorning = getTimesmorning(currentTime); int intTodayTimesnight = getTimesnight(currentTime); String strTodayTimesnight = getDateStringByTimeStamp(intTodayTimesnight, format); if (strStarttime == null && strEndtime == null) { if (intStarttime == null && intEndtime != null) { } } else { if (strStarttime != null && strEndtime != null) { intStarttime = getAppointedTimeIntValue(strStarttime, format); intEndtime = getAppointedTimeIntValue(strEndtime, format); } else if (strStarttime != null) { intStarttime = getAppointedTimeIntValue(strStarttime, format); intEndtime = intTodayTimesnight; strEndtime = strTodayTimesnight; } else { intEndtime = getAppointedTimeIntValue(strEndtime, format); if (ymdhms) { strStarttime = "1970-01-01 00:00:00"; } else { strStarttime = "1970-01-01"; } intStarttime = getAppointedTimeIntValue(strStarttime, format); } if (ymd) { intStarttime = getTimesmorning(getDateByTimeStamp(intStarttime, format)); strStarttime = getDateStringByTimeStamp(intStarttime, format); intEndtime = getTimesnight(getDateByTimeStamp(intEndtime, format)); strEndtime = getDateStringByTimeStamp(intEndtime, format); } if (intStarttime > intEndtime) { intStarttime = getTimesmorning(getDateByTimeStamp(intEndtime, format)); strStarttime = getDateStringByTimeStamp(intStarttime, format); } if (intStarttime > intCurrentTime) { intStarttime = intTodayTimesmorning; strStarttime = getDateStringByTimeStamp(intStarttime, format); } if (intStarttime.equals(intEndtime)) { intStarttime = getTimesmorning(getDateByTimeStamp(intStarttime, format)); strStarttime = getDateStringByTimeStamp(intStarttime, format); } } timeMap.put("strStarttime", strStarttime); timeMap.put("intStarttime", intStarttime); timeMap.put("strEndtime", strEndtime); timeMap.put("intEndtime", intEndtime); return timeMap; } } public static Set<Integer> strTimesToIntTimes(String strTimes, String split, String foratter) { Set<Integer> intTimeSet = new HashSet(); String[] dts = strTimes.split(split); String[] var5 = dts; int var6 = dts.length; for(int var7 = 0; var7 < var6; ++var7) { String str = var5[var7]; if (str != null && !"".equals(str.trim())) { try { intTimeSet.add(getAppointedTimeIntValue(str.trim(), foratter)); } catch (Exception var10) { } } } return intTimeSet; } public static String foratterIntTime(Integer intTime) { if (intTime != null && intTime > 0) { int h = intTime / 60; int m = intTime % 60; String hh = h + ""; String mm = m + ""; if (hh.length() == 1) { hh = "0" + h; } if (mm.length() == 1) { mm = "0" + m; } return hh + ":" + mm; } else { return "00:00"; } } public static Integer foratterStrTime(String strTime) { String strDateTime = "1970-01-01 " + strTime + ":00"; Integer result = 0; try { Integer intTime = getAppointedTimeIntValue(strDateTime, "yyyy-MM-dd HH:mm:ss"); String hh = getDateStringByTimeStamp(intTime, "HH"); String mm = getDateStringByTimeStamp(intTime, "mm"); int h = Integer.parseInt(hh, 10); int m = Integer.parseInt(mm); result = h * 60 + m; } catch (Exception var8) { } return result; } public static Integer foratterDateTime(String strDateTime) { Integer resultIntTime = 0; if (strDateTime == null) { return resultIntTime; } else { strDateTime = strDateTime.trim(); SimpleDateFormat sdf = new SimpleDateFormat(); if (!"".equals(strDateTime) && strDateTime.indexOf("date") != 0) { if (strDateTime.indexOf("time") == 0) { if (strDateTime.length() > 4) { switch(strDateTime.toCharArray()[4]) { case 'H': case 'h': sdf = new SimpleDateFormat("HH"); break; case 'M': case 'm': sdf = new SimpleDateFormat("HH:mm"); break; case 'S': sdf = new SimpleDateFormat("HH:mm:ss:SSS"); break; case 's': sdf = new SimpleDateFormat("HH:mm:ss"); } strDateTime = sdf.format(new Date()); } else { sdf = new SimpleDateFormat("HH:mm:ss"); strDateTime = sdf.format(new Date()); } resultIntTime = foratterDateTime(strDateTime); } else if (strDateTime.indexOf("datetime") != 0 && strDateTime.indexOf("-") <= 0 && strDateTime.indexOf("/") <= 0) { String[] strArrTime = strDateTime.split(":"); int strArrLenTime = strArrTime.length; if (strArrLenTime == 1) { resultIntTime = Integer.parseInt(strArrTime[0]); } else if (strArrLenTime == 2) { resultIntTime = Integer.parseInt(strArrTime[0]) * 60 + Integer.parseInt(strArrTime[1]); } else if (strArrLenTime == 3) { resultIntTime = Integer.parseInt(strArrTime[0]) * 60 * 60 + Integer.parseInt(strArrTime[1]) * 60 + Integer.parseInt(strArrTime[2]); } else { resultIntTime = 0; } } } return resultIntTime; } } public static int getCurrentTimeMinuteValue() { Integer result = 0; try { Integer intTime = getCurrentTimeIntValue(); String hh = getDateStringByTimeStamp(intTime, "HH"); String mm = getDateStringByTimeStamp(intTime, "mm"); int h = Integer.parseInt(hh, 10); int m = Integer.parseInt(mm); result = h * 60 + m; } catch (Exception var6) { } return result; } public static void main(String[] args) { Integer statTime = 1460329200; Integer endTime = 1460340000; System.out.println(getHHMM(statTime)); System.out.println(getHHMM(endTime)); } public static Date gregorianCalendar(Date date, int value, int field) { GregorianCalendar gc = new GregorianCalendar(); gc.setTime(date); gc.add(field, value); date = gc.getTime(); return date; } public static Integer addDay(Integer intDate, int day) { Integer result = 0; int oneDay = 86400; result = intDate + day * oneDay; return result; } public static Integer addDay(Date date, int day) { Integer intDate = (int)(date.getTime() / 1000L); Integer result = 0; int oneDay = 86400; result = intDate + day * oneDay; return result; } public static String getHHMM(Integer dateTime) { String result = ""; try { String hh = getDateStringByTimeStamp(dateTime, "HH"); String mm = getDateStringByTimeStamp(dateTime, "mm"); result = result + hh + ":" + mm; } catch (Exception var4) { var4.printStackTrace(); } return result; } public static String getFormatDate(Integer timeStamp, SimpleDateFormat format) { return format.format(new Date((long)timeStamp * 1000L)); } public static Integer getNowTimeStamp() { Integer now = 0; Long time = System.currentTimeMillis() / 1000L; now = time.intValue(); return now; } public static Integer getTodayUnixTimeStamp() { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); String day = df.format(date); return getDayUnixTimeStamp(day); } public static Integer getDayUnixTimeStamp(String day) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { Date date = df.parse(day); Calendar cal = Calendar.getInstance(); cal.setTime(date); long timestamp = cal.getTimeInMillis(); return (int)(timestamp / 1000L); } catch (ParseException var6) { var6.printStackTrace(); return 0; } } //获取当天的开始时间 public static Date getDayBegin() { Calendar calendar = new GregorianCalendar(); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } //获取当前的结束时间 public static Date getDayEnd() { Calendar calendar = new GregorianCalendar(); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); return calendar.getTime(); } //获取昨天的开始时间 public static Date getBeginDayOfYesterday() { Calendar calendar = new GregorianCalendar(); calendar.setTime(getDayBegin()); calendar.add(Calendar.DAY_OF_MONTH, -1); return calendar.getTime(); } //获取昨天的结束时间 public static Date getEndDayOfYesterday() { Calendar calendar = new GregorianCalendar(); calendar.setTime(getDayEnd()); calendar.add(Calendar.DAY_OF_MONTH, -1); return calendar.getTime(); } //获取明天的开始时间 public static Date getBeginDayOfTomorrow() { Calendar calendar = new GregorianCalendar(); calendar.setTime(getDayBegin()); calendar.add(Calendar.DAY_OF_MONTH, 1); return calendar.getTime(); } //获取明天的结束时间 public static Date getEndDayOfTomorrow() { Calendar calendar = new GregorianCalendar(); calendar.setTime(getDayEnd()); calendar.add(Calendar.DAY_OF_MONTH, 1); return calendar.getTime(); } //获取本周的开始时间 @SuppressWarnings("unused") 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); } //获取上周的开始时间 @SuppressWarnings("unused") public static Date getBeginDayOfLastWeek() { 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 - 7); return getDayStartTime(cal.getTime()); } //获取上周的结束时间 public static Date getEndDayOfLastWeek(){ Calendar cal = Calendar.getInstance(); cal.setTime(getBeginDayOfLastWeek()); 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 getBeginDayOfLastMonth() { Calendar calendar = Calendar.getInstance(); calendar.set(getNowYear(), getNowMonth() - 2, 1); return getDayStartTime(calendar.getTime()); } //获取上月的结束时间 public static Date getEndDayOfLastMonth() { Calendar calendar = Calendar.getInstance(); calendar.set(getNowYear(), getNowMonth() - 2, 1); int day = calendar.getActualMaximum(5); calendar.set(getNowYear(), getNowMonth() - 2, day); return getDayEndTime(calendar.getTime()); } //获取本年的开始时间 public static java.util.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 java.util.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(); } //获取某年某月到某年某月按天的切片日期集合(间隔天数的集合) @SuppressWarnings({ "rawtypes", "unchecked" }) 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; } //获取某年某月按天切片日期集合(某个月间隔多少天的日期集合) @SuppressWarnings({ "unchecked", "rawtypes" }) 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; } }
转载于:https://my.oschina.net/LeBronJames/blog/3101382