| | |
| | | * 日期格式(yyyy-MM-dd HH) |
| | | * */ |
| | | public static final String yyyy_MM_dd_HH_EN = "yyyy-MM-dd HH"; |
| | | /* |
| | | * 日期格式(MM-dd) |
| | | * */ |
| | | public static final String MM_dd_EN = "MM-dd"; |
| | | |
| | | /* |
| | | * Date类toString格式 |
| | | * */ |
| | | * Date类toString格式 |
| | | * */ |
| | | public static final String EEE_MMM_dd_HH_mm_ss_zzz_yyyy = "EEE MMM dd HH:mm:ss zzz yyyy"; |
| | | /** |
| | | * DateFormat缓存 |
| | |
| | | |
| | | |
| | | /** |
| | | * @Description: Date的toString格式转为Date |
| | | * @Param: [] |
| | | * @return: java.util.Date |
| | | * @Author: 陈凯裕 |
| | | * @Date: 2021/8/25 |
| | | */ |
| | | public static Date dateStringToDate(String formatStr){ |
| | | * @Description: 获取指定小时的开始时间 |
| | | * @Param: [date] |
| | | * @return: java.util.Date |
| | | * @Author: 陈凯裕 |
| | | * @Date: 2021/9/26 |
| | | */ |
| | | public static Date getHourlyStartTime(Date date) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(date); |
| | | cal.set(Calendar.MINUTE, 0); |
| | | cal.set(Calendar.SECOND, 0); |
| | | cal.set(Calendar.MILLISECOND, 0); |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * @Description: 获取指定小时的结束时间 |
| | | * @Param: [date] |
| | | * @return: java.util.Date |
| | | * @Author: 陈凯裕 |
| | | * @Date: 2021/9/26 |
| | | */ |
| | | public static Date getHourlyEndTime(Date date) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(date); |
| | | cal.set(Calendar.MINUTE, 59); |
| | | cal.set(Calendar.SECOND, 59); |
| | | cal.set(Calendar.MILLISECOND, 0); |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * @Description: 获取指定日期的第一个小时 |
| | | * @Param: [date] |
| | | * @return: java.util.List<java.util.Date> |
| | | * @Author: 陈凯裕 |
| | | * @Date: 2021/9/8 |
| | | */ |
| | | public static Date getDailyStartTime(Date date) { |
| | | String dateStr = dateToDateString(date, "yyyy-MM-dd"); |
| | | String startDateStr = dateStr + " 00:00:00"; |
| | | Date startDate = getDate(startDateStr, "yyyy-MM-dd HH:mm:ss"); |
| | | return startDate; |
| | | } |
| | | |
| | | /** |
| | | * @Description: 获取指定日期的最后一个小时 |
| | | * @Param: [date] |
| | | * @return: java.util.Date |
| | | * @Author: 陈凯裕 |
| | | * @Date: 2021/9/26 |
| | | */ |
| | | public static Date getDailyEndTime(Date date) { |
| | | String dateStr = dateToDateString(date, "yyyy-MM-dd"); |
| | | String endDateStr = dateStr + " 23:59:59"; |
| | | Date endDate = getDate(endDateStr, "yyyy-MM-dd HH:mm:ss"); |
| | | return endDate; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * @Description: 获取指定日期那周的第一天第一个小时 |
| | | * @Param: [date] |
| | | * @return: java.util.Date |
| | | * @Author: 陈凯裕 |
| | | * @Date: 2021/9/26 |
| | | */ |
| | | public static Date getWeeklyStartTime(Date date) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(date); |
| | | if (1 == cal.get(Calendar.DAY_OF_WEEK)) { |
| | | cal.add(Calendar.DAY_OF_MONTH, -1); |
| | | } |
| | | cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); |
| | | 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(); |
| | | } |
| | | |
| | | /** |
| | | * @Description: 获取指定日期那周的最后一天最后一个小时 |
| | | * @Param: [date] |
| | | * @return: java.util.Date |
| | | * @Author: 陈凯裕 |
| | | * @Date: 2021/9/26 |
| | | */ |
| | | public static Date getWeeklyEndTime(Date date) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(date); |
| | | if (1 != cal.get(Calendar.DAY_OF_WEEK)) { |
| | | cal.add(Calendar.DAY_OF_MONTH, 7); |
| | | } |
| | | cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); |
| | | cal.set(Calendar.HOUR_OF_DAY, 23); |
| | | cal.set(Calendar.MINUTE, 59); |
| | | cal.set(Calendar.SECOND, 59); |
| | | cal.set(Calendar.MILLISECOND, 0); |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * @Description: 获取指定日期当月的第一天第一个小时 |
| | | * @Param: [date] |
| | | * @return: java.util.Date |
| | | * @Author: 陈凯裕 |
| | | * @Date: 2021/9/26 |
| | | */ |
| | | public static Date getMonthlyStartTime(Date date) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(date); |
| | | cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH)); |
| | | 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(); |
| | | } |
| | | |
| | | /** |
| | | * @Description: 获取指定日期当月的最后一天最后一个小时 |
| | | * @Param: [date] |
| | | * @return: java.util.Date |
| | | * @Author: 陈凯裕 |
| | | * @Date: 2021/9/26 |
| | | */ |
| | | public static Date getMonthlyEndTime(Date date) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(date); |
| | | cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); |
| | | cal.set(Calendar.HOUR_OF_DAY, 23); |
| | | cal.set(Calendar.MINUTE, 59); |
| | | cal.set(Calendar.SECOND, 59); |
| | | cal.set(Calendar.MILLISECOND, 0); |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * @Description: Date的toString格式转为Date |
| | | * @Param: [] |
| | | * @return: java.util.Date |
| | | * @Author: 陈凯裕 |
| | | * @Date: 2021/8/25 |
| | | */ |
| | | public static Date dateStringToDate(String formatStr) { |
| | | try { |
| | | SimpleDateFormat sdf = new SimpleDateFormat(EEE_MMM_dd_HH_mm_ss_zzz_yyyy, Locale.US); |
| | | return sdf.parse(formatStr); |
| | |
| | | return dateToDateString(now.getTime(), formatStr); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取指定日期day天后的一个(formatStr)的字符串 |
| | | * |
| | |
| | | } |
| | | return new Date(); |
| | | } |
| | | |
| | | |
| | | |
| | | public static String getAfterNDays(Date date, int n, String formateStr) { |
| | | SimpleDateFormat sdf = new SimpleDateFormat(formateStr); |
| | |
| | | return getDate(dateToDateString(cal.getTime(), yyyy_MM_dd_EN)); |
| | | } |
| | | |
| | | /* |
| | | * 获取今年的第一天 |
| | | * */ |
| | | public static Date getFirstDayOfCurrYear() { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.set(Calendar.DAY_OF_YEAR, 1); |
| | | return getDate(dateToDateString(cal.getTime(), yyyy_MM_dd_EN)); |
| | | } |
| | | |
| | | /* |
| | | * 获取日期年份的第一天 |
| | | * */ |
| | | public static Date getFirstDayOfYear(Date date) { |
| | | final Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(date); |
| | | final int last = cal.getActualMinimum(Calendar.DAY_OF_YEAR); |
| | | cal.set(Calendar.DAY_OF_YEAR, last); |
| | | cal.set(Calendar.HOUR_OF_DAY, 0); |
| | | cal.set(Calendar.MINUTE, 0); |
| | | cal.set(Calendar.SECOND, 0); |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | /* |
| | | * 获取日期年份的最后一天 |
| | | * */ |
| | | public static Date getLastDayOfYear(Date date) { |
| | | final Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(date); |
| | | final int last = cal.getActualMaximum(Calendar.DAY_OF_YEAR); |
| | | cal.set(Calendar.DAY_OF_YEAR, last); |
| | | cal.set(Calendar.HOUR_OF_DAY, 23); |
| | | cal.set(Calendar.MINUTE, 59); |
| | | cal.set(Calendar.SECOND, 59); |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | /* |
| | | * 获取指定日期月的第一天 |
| | | * */ |
| | | public static Date getFirstDayOfMonth(Date date) { |
| | | final Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(date); |
| | | final int last = cal.getActualMinimum(Calendar.DAY_OF_MONTH); |
| | | cal.set(Calendar.DAY_OF_MONTH, last); |
| | | cal.set(Calendar.HOUR_OF_DAY, 0); |
| | | cal.set(Calendar.MINUTE, 0); |
| | | cal.set(Calendar.SECOND, 0); |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | /* |
| | | * 获取指定日期月的最后一天 |
| | | * */ |
| | | public static Date getLastDayOfMonth(Date date) { |
| | | final Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(date); |
| | | final int last = cal.getActualMaximum(Calendar.DAY_OF_MONTH); |
| | | cal.set(Calendar.DAY_OF_MONTH, last); |
| | | cal.set(Calendar.HOUR_OF_DAY, 23); |
| | | cal.set(Calendar.MINUTE, 59); |
| | | cal.set(Calendar.SECOND, 59); |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | |
| | | /* |
| | | * 判断日期是否为今年 |
| | | * */ |
| | | public static boolean isCurrentYear(Date date) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(new Date()); |
| | | int currentYear = cal.get(Calendar.YEAR); |
| | | cal.setTime(date); |
| | | int year = cal.get(Calendar.YEAR); |
| | | return year == currentYear; |
| | | } |
| | | |
| | | /* |
| | | * 判断日期是否为本月 |
| | | * */ |
| | | public static boolean isCurrentMonth(Date date) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(new Date()); |
| | | int currentYear = cal.get(Calendar.MONTH); |
| | | cal.setTime(date); |
| | | int year = cal.get(Calendar.MONTH); |
| | | return year == currentYear; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取当前月的最后一天 |
| | | * |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取指定年月的第一天 |
| | | * |
| | | * @param year |
| | | * @param month |
| | | * @return |
| | | */ |
| | | public static String getFirstDayOfMonth(int year, int month) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | // 设置年份 |
| | | cal.set(Calendar.YEAR, year); |
| | | // 设置月份 |
| | | cal.set(Calendar.MONTH, month - 1); |
| | | // 获取某月最小天数 |
| | | int lastDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH); |
| | | // 设置日历中月份的最大天数 |
| | | cal.set(Calendar.DAY_OF_MONTH, lastDay); |
| | | // 格式化日期 |
| | | DateFormat df = getDateFormat(yyyy_MM_dd_EN); |
| | | return df.format(cal.getTime()); |
| | | } |
| | | |
| | | /** |
| | | * 获取指定年月的第一天 |
| | | * |
| | | * @param year |
| | | * @param month |
| | | * @return |
| | | */ |
| | | public static String getLastDayOfMonth(int year, int month) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | // 设置年份 |
| | | cal.set(Calendar.YEAR, year); |
| | | // 设置月份 |
| | | cal.set(Calendar.MONTH, month - 1); |
| | | // 获取某月最大天数 |
| | | int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); |
| | | // 设置日历中月份的最大天数 |
| | | cal.set(Calendar.DAY_OF_MONTH, lastDay); |
| | | // 格式化日期 |
| | | DateFormat df = getDateFormat(yyyy_MM_dd_EN); |
| | | return df.format(cal.getTime()); |
| | | } |
| | | |
| | | /** |
| | | * 获取昨天日期 |
| | | * |
| | | * @param date |
| | |
| | | return df.format(calendar.getTime()); |
| | | } |
| | | |
| | | /* |
| | | * 获取昨天Date |
| | | * */ |
| | | public static Date getYesterdayDate() { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(new Date()); |
| | | cal.set(Calendar.HOUR_OF_DAY, 0); |
| | | cal.set(Calendar.MINUTE, 0); |
| | | cal.set(Calendar.SECOND, 0); |
| | | cal.add(Calendar.DAY_OF_MONTH, -1); |
| | | return cal.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * 10位时间戳转时间 |
| | |
| | | todayStart.set(Calendar.MILLISECOND, 0); |
| | | return todayStart.getTime().getTime(); |
| | | } |
| | | |
| | | |
| | | public static Integer getTodayInt() { |
| | | return (int) (getTodayTime() / 1000); |
| | |
| | | return calendar.getTime(); |
| | | } |
| | | |
| | | //加减年份 |
| | | public static Date addYears(Date date, int years) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | calendar.add(Calendar.YEAR, years); |
| | | return calendar.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * <p> |
| | | * Title: getDays |
| | |
| | | days = (int) ((maxDate.getTime() - minDate.getTime()) / (24 * 60 * 60 * 1000)); |
| | | return days; |
| | | } |
| | | |
| | | /** |
| | | * @Description: 获取两个日期相差几个月 |
| | | * @Param: [start, end] |
| | | * @return: int |
| | | * @Author: 陈凯裕 |
| | | * @Date: 2021/9/23 |
| | | */ |
| | | public static int getMonth(Date start, Date end) { |
| | | if (start.after(end)) { |
| | | Date t = start; |
| | | start = end; |
| | | end = t; |
| | | } |
| | | Calendar startCalendar = Calendar.getInstance(); |
| | | startCalendar.setTime(start); |
| | | Calendar endCalendar = Calendar.getInstance(); |
| | | endCalendar.setTime(end); |
| | | Calendar temp = Calendar.getInstance(); |
| | | temp.setTime(end); |
| | | temp.add(Calendar.DATE, 1); |
| | | |
| | | int year = endCalendar.get(Calendar.YEAR) |
| | | - startCalendar.get(Calendar.YEAR); |
| | | int month = endCalendar.get(Calendar.MONTH) |
| | | - startCalendar.get(Calendar.MONTH); |
| | | |
| | | if ((startCalendar.get(Calendar.DATE) == 1) |
| | | && (temp.get(Calendar.DATE) == 1)) { |
| | | return year * 12 + month + 1; |
| | | } else if ((startCalendar.get(Calendar.DATE) != 1) |
| | | && (temp.get(Calendar.DATE) == 1)) { |
| | | return year * 12 + month; |
| | | } else if ((startCalendar.get(Calendar.DATE) == 1) |
| | | && (temp.get(Calendar.DATE) != 1)) { |
| | | return year * 12 + month; |
| | | } else { |
| | | return (year * 12 + month - 1) < 0 ? 0 : (year * 12 + month); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @Description: 获取两个日期之间所有的月份 |
| | | * @Param: [start, end] |
| | | * @return: java.util.List<java.lang.String> |
| | | * @Author: 陈凯裕 |
| | | * @Date: 2021/9/23 |
| | | */ |
| | | public static List<String> getAllMonth(Date start, Date end) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(start); |
| | | // 获取开始年份和开始月份 |
| | | int startYear = calendar.get(Calendar.YEAR); |
| | | int startMonth = calendar.get(Calendar.MONTH); |
| | | // 获取结束年份和结束月份 |
| | | calendar.setTime(end); |
| | | int endYear = calendar.get(Calendar.YEAR); |
| | | int endMonth = calendar.get(Calendar.MONTH); |
| | | // |
| | | List<String> list = new ArrayList<String>(); |
| | | |
| | | for (int i = startYear; i <= endYear; i++) { |
| | | String date = ""; |
| | | if (startYear == endYear) { |
| | | for (int j = startMonth; j <= endMonth; j++) { |
| | | if (j < 9) { |
| | | date = i + "-0" + (j + 1); |
| | | } else { |
| | | date = i + "-" + (j + 1); |
| | | } |
| | | list.add(date); |
| | | } |
| | | |
| | | } else { |
| | | if (i == startYear) { |
| | | for (int j = startMonth; j < 12; j++) { |
| | | if (j < 9) { |
| | | date = i + "-0" + (j + 1); |
| | | } else { |
| | | date = i + "-" + (j + 1); |
| | | } |
| | | list.add(date); |
| | | } |
| | | } else if (i == endYear) { |
| | | for (int j = 0; j <= endMonth; j++) { |
| | | if (j < 9) { |
| | | date = i + "-0" + (j + 1); |
| | | } else { |
| | | date = i + "-" + (j + 1); |
| | | } |
| | | list.add(date); |
| | | } |
| | | } else { |
| | | for (int j = 0; j < 12; j++) { |
| | | if (j < 9) { |
| | | date = i + "-0" + (j + 1); |
| | | } else { |
| | | date = i + "-" + (j + 1); |
| | | } |
| | | list.add(date); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * @Description: 获取两个日期之间所有的年份 |
| | | * @Param: [start, end] |
| | | * @return: java.util.List<java.lang.String> |
| | | * @Author: 陈凯裕 |
| | | * @Date: 2021/9/23 |
| | | */ |
| | | public static List<String> getAllYear(Date start, Date end) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(start); |
| | | int startYear = calendar.get(Calendar.YEAR); |
| | | calendar.setTime(end); |
| | | int endYear = calendar.get(Calendar.YEAR); |
| | | |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(String.valueOf(startYear)); |
| | | |
| | | int i = endYear - startYear; |
| | | |
| | | for (int j = 1; j < i + 1; j++) { |
| | | list.add(String.valueOf(startYear + j)); |
| | | } |
| | | |
| | | return list; |
| | | } |
| | | |
| | | public static List<String> getAllDays(Date start, Date end) { |
| | | List<String> list = new ArrayList<String>(); |
| | | SimpleDateFormat outformat = new SimpleDateFormat("yyyy-MM-dd"); |
| | | |
| | | Calendar sCalendar = Calendar.getInstance(); |
| | | sCalendar.setTime(start); |
| | | int year = sCalendar.get(Calendar.YEAR); |
| | | int month = sCalendar.get(Calendar.MONTH); |
| | | int day = sCalendar.get(Calendar.DATE); |
| | | sCalendar.set(year, month, day, 0, 0, 0); |
| | | |
| | | Calendar eCalendar = Calendar.getInstance(); |
| | | eCalendar.setTime(end); |
| | | year = eCalendar.get(Calendar.YEAR); |
| | | month = eCalendar.get(Calendar.MONTH); |
| | | day = eCalendar.get(Calendar.DATE); |
| | | eCalendar.set(year, month, day, 0, 0, 0); |
| | | |
| | | while (sCalendar.before(eCalendar)) { |
| | | list.add(outformat.format(sCalendar.getTime())); |
| | | sCalendar.add(Calendar.DAY_OF_YEAR, 1); |
| | | } |
| | | list.add(outformat.format(eCalendar.getTime())); |
| | | |
| | | return list; |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 时间戳转 date |
| | |
| | | } |
| | | cal.setTime(getDate(time, df)); |
| | | for (long d = cal.getTimeInMillis(); d < getDate(end, df).getTime(); cal.set(i, cal.get(i) + 1), d = cal.getTimeInMillis()) { |
| | | String format = dateToDateString(new Date(d),dateFormat); |
| | | String format = dateToDateString(new Date(d), dateFormat); |
| | | result.add(format); |
| | | } |
| | | return result; |
| | |
| | | stringBuffer.replace(15, 16, String.valueOf(i)); |
| | | return getDate(stringBuffer.toString(), yyyy_MM_dd_HH_mm_EN); |
| | | } |
| | | |
| | | //获取指定日期hours小时后日期 |
| | | public static Date addHours(Date date, int hours) { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.setTime(date); |
| | | calendar.add(Calendar.HOUR_OF_DAY, hours); |
| | | return calendar.getTime(); |
| | | } |
| | | |
| | | //获取去年Date |
| | | public static Date getFirstDayOfLastYear() { |
| | | String lastYear = getDateAddYear(DateUtils.dateToDateString(getDate(), DateUtils.yyyy), -1); |
| | | return DateUtils.getDate(lastYear, DateUtils.yyyy); |
| | | } |
| | | |
| | | //获取一天中每个小时的前后一小时集合 |
| | | public static Map<Date, List<Integer>> getBeforeAndAfterHourDate(Date date) { |
| | | String s = dateToDateString(date, yyyy_MM_dd_EN); |
| | | List<String> timeLag = getTimeLag(s); |
| | | Map<Date, List<Integer>> result = new HashMap<>(); |
| | | for (String s1 : timeLag) { |
| | | List<Integer> objects = new ArrayList<>(); |
| | | Date current = getDate(s1, yyyy_MM_dd_HH_EN); |
| | | Date before = addHours(current, -1); |
| | | Date after = addHours(current, 1); |
| | | objects.add(getHour(before)); |
| | | objects.add(getHour(current)); |
| | | objects.add(getHour(after)); |
| | | result.put(current, objects); |
| | | } |
| | | return result; |
| | | } |
| | | } |