| | |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.*; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.*; |
| | | |
| | | import cn.hutool.core.date.DateUnit; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | @Slf4j |
| | |
| | | public static DateTimeFormatter format_ymdhms = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | public static DateTimeFormatter format_ymd = DateTimeFormatter.ofPattern("yyyy-MM-dd"); |
| | | public static DateTimeFormatter format_ymdhms_string = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); |
| | | public static DateTimeFormatter format_ymdhms_yyyyMMddmmHHssSSS = DateTimeFormatter.ofPattern("yyyyMMddmmHHssSSS"); |
| | | public static DateTimeFormatter format_ymdhms_no_signal = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); |
| | | public static SimpleDateFormat yyyyMMdd_format = new SimpleDateFormat("yyyy-MM-dd"); |
| | | public static SimpleDateFormat yyyy_MM_dd_format = new SimpleDateFormat("yyyy/MM/ddHH:mm:ss"); |
| | |
| | | public static DateTimeFormatter format_ymd_String = DateTimeFormatter.ofPattern("yyMMdd"); |
| | | public static SimpleDateFormat yyyyMM_format = new SimpleDateFormat("yyyy-MM"); |
| | | public static SimpleDateFormat format_yyymmdd = new SimpleDateFormat("yyyyMMdd"); |
| | | public static SimpleDateFormat format_yyyy = new SimpleDateFormat("yyyy"); |
| | | public static SimpleDateFormat format_yyyyMMddHHmmss = new SimpleDateFormat("yyyyMMddHHmmss"); |
| | | private static DateTimeFormatter format_ymdhmssss = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); |
| | | private static DateTimeFormatter format_ymds = DateTimeFormatter.ofPattern("yyyyMMdd"); |
| | | private static DateTimeFormatter format_yms = DateTimeFormatter.ofPattern("yyyyMM"); |
| | | private static DateTimeFormatter format_y = DateTimeFormatter.ofPattern("yyyy"); |
| | | |
| | | /** |
| | | * 将日期对象格式化成指定的字符串格式 |
| | |
| | | |
| | | /** |
| | | * 字符串转date |
| | | * |
| | | * |
| | | * @param date |
| | | * 时间戳 |
| | | * @param format |
| | |
| | | |
| | | /** |
| | | * 字符串转date |
| | | * |
| | | * |
| | | * @param date |
| | | * 时间戳 |
| | | * @return 时间 |
| | |
| | | |
| | | /** |
| | | * 字符串转date |
| | | * |
| | | * |
| | | * @param date |
| | | * 时间戳 |
| | | * @return 时间 |
| | |
| | | |
| | | /** |
| | | * 获取当前时间 |
| | | * |
| | | * |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 返回当前事件的时间戳 |
| | | * |
| | | * |
| | | * @return |
| | | */ |
| | | public static Long getCurrentDateTimeStamp() { |
| | |
| | | |
| | | /** |
| | | * 获取当前时间字符串,格式为yyyy-MM-dd HH:mm:ss |
| | | * |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getCurrentDateStr() { |
| | |
| | | |
| | | /** |
| | | * 获取当前时间字符串,格式为yyyyMMdd |
| | | * |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getCurrentDateString() { |
| | |
| | | |
| | | /** |
| | | * 获取当前时间字符串,格式为yyyy-MM-dd |
| | | * |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getCurrentDateStrymd() { |
| | |
| | | |
| | | /** |
| | | * 获取当前时间long值 |
| | | * |
| | | * |
| | | * @return |
| | | */ |
| | | public static long getCurrentDataLong() { |
| | |
| | | |
| | | /** |
| | | * 获取当前时间 |
| | | * |
| | | * |
| | | * @param format |
| | | * @return |
| | | * @throws Exception |
| | |
| | | |
| | | /** |
| | | * 对日期进行加法操作 |
| | | * |
| | | * |
| | | * @param date |
| | | * @param hours |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * 对日期的分钟进行加法操作 |
| | | * |
| | | * |
| | | * @param date |
| | | * @param minutes |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * 计算两个日期先差多少秒 |
| | | * |
| | | * |
| | | * @param pre |
| | | * 前一个日期 |
| | | * @param after |
| | |
| | | |
| | | /** |
| | | * 计算两个时间相差的天数 |
| | | * |
| | | * |
| | | * @param stardate |
| | | * @param enddate |
| | | * @return |
| | |
| | | |
| | | long day = diff / nd; |
| | | |
| | | long hour = diff % nd / nh; |
| | | long hour = diff / nh; |
| | | |
| | | long min = diff % nd % nh / nm; |
| | | long min = diff / nm; |
| | | |
| | | return (int)day; |
| | | return (int)hour; |
| | | } |
| | | |
| | | /** |
| | | * 结束时间与当前时间计算相差的月数 |
| | | * |
| | | * |
| | | * @param enddate |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 获取某个时间段之前的时间点 |
| | | * |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getSomeTimeStapStr(String sign) { |
| | |
| | | |
| | | /** |
| | | * 获取失效时间点(在什么时间失效) |
| | | * |
| | | * |
| | | * @param minutes |
| | | * 有效分钟数 |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * 获取当前年份 |
| | | * |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getCurrentYear() { |
| | |
| | | |
| | | /** |
| | | * 获取当前月份 |
| | | * |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getCurrentMonth() { |
| | |
| | | |
| | | /** |
| | | * 获取无符号的当前时间 |
| | | * |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getCurrentDateStrNoSignal() { |
| | |
| | | |
| | | /** |
| | | * 获取前几个小时的时间 |
| | | * |
| | | * |
| | | * @param hours |
| | | * @return |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 小时取整 |
| | | * |
| | | * |
| | | * @param date |
| | | * @param hour |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * 分钟取整 以十分钟为单位 ,去除尾端,加上 参数 46->40+minutes*10 |
| | | * |
| | | * |
| | | * @param date |
| | | * @param minutes |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * 天数取整 |
| | | * |
| | | * |
| | | * @param date |
| | | * @param day |
| | | * @return |
| | |
| | | |
| | | /** |
| | | * 日期相加减 |
| | | * |
| | | * |
| | | * @param time |
| | | * 时间字符串 yyyy-MM-dd HH:mm:ss |
| | | * @param num |
| | |
| | | |
| | | /** |
| | | * 获取当前月第一天 |
| | | * |
| | | * |
| | | * @return |
| | | */ |
| | | public static Date getFirstDayOfMonth() { |
| | |
| | | |
| | | /** |
| | | * 获取当前年月的第一天时间 |
| | | * |
| | | * |
| | | * @param year |
| | | * 年份 |
| | | * @param month |
| | |
| | | |
| | | /** |
| | | * 获取当前年月的最后一天时间 |
| | | * |
| | | * |
| | | * @param year |
| | | * 年份 |
| | | * @param month |
| | |
| | | return instance.get(Calendar.MONTH); |
| | | } |
| | | |
| | | public static int getYear(Date date) { |
| | | Calendar instance = Calendar.getInstance(); |
| | | instance.setTime(date); |
| | | return instance.get(Calendar.YEAR); |
| | | } |
| | | |
| | | public static boolean before(Date start, Date end) { |
| | | Calendar date1 = Calendar.getInstance(); |
| | | date1.setTime(start); |
| | |
| | | |
| | | /** |
| | | * date2比date1多的天数 |
| | | * |
| | | * |
| | | * @param date1 |
| | | * @param date2 |
| | | * @return |
| | |
| | | } |
| | | |
| | | /** |
| | | * 计算剩余天数,不足一天按一天算 |
| | | * @param expireDate |
| | | * @return |
| | | */ |
| | | public static int retrieveRemainingDays(Date expireDate) { |
| | | Date nowDate = new Date(); |
| | | Calendar startDate = Calendar.getInstance(); |
| | | startDate.setTime(nowDate); |
| | | Calendar endDate = Calendar.getInstance(); |
| | | endDate.setTime(expireDate); |
| | | Calendar date = (Calendar) startDate.clone(); |
| | | int daysBetween = 0; |
| | | while (date.before(endDate)) { |
| | | date.add(Calendar.DAY_OF_MONTH, 1); |
| | | daysBetween++; |
| | | } |
| | | return daysBetween; |
| | | } |
| | | |
| | | /** |
| | | * 获取当前月第一天 |
| | | * |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getFirstDayOfMonthString() { |
| | |
| | | |
| | | /** |
| | | * 获取当前月最后一天 |
| | | * |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getLastDayOfMonthString() { |
| | |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | return sdf.format(calendar.getTime()) + " 23:59:59"; |
| | | } |
| | | /** |
| | | * 获取当前月最后一天 |
| | | * |
| | | * @return |
| | | */ |
| | | public static Date getLastDayOfMonth() { |
| | | Calendar calendar = Calendar.getInstance(); |
| | | |
| | | calendar.add(Calendar.MONTH, 1); |
| | | |
| | | calendar.set(Calendar.DAY_OF_MONTH, 0); |
| | | // 格式化日期 |
| | | |
| | | return calendar.getTime(); |
| | | } |
| | | |
| | | /** |
| | | * 获取当前时间(年月日) |
| | | * |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getDayOfMonthString() { |
| | |
| | | } |
| | | |
| | | public static void main(String[] args) throws Exception { |
| | | // Date date= new Date(); |
| | | // Date after = new Date(); |
| | | // System.out.println(getFirstDayOfMonthString()); |
| | | // System.out.println(getDayOfMonthString()); |
| | | // List<String> beforeDays = getBeforeDays(15); |
| | | // System.out.println(beforeDays); |
| | | List<String> yearMonths = getYearMonths(); |
| | | System.out.println(yearMonths); |
| | | List<String> latest12Month = getLatest12Month(LocalDate.now(), 10); |
| | | System.out.println(latest12Month); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 获取当前年月字符串 |
| | | * @return 年月字符串 |
| | | */ |
| | | public static String getCurrentDateString_YYYY_MM() { |
| | | String nowtime = getCurrentDate().format(format_yms); |
| | | return nowtime; |
| | | } |
| | | |
| | | /** |
| | | * 获取当前年字符串 |
| | | * @return |
| | | */ |
| | | public static String getCurrentDateString_YYYY() { |
| | | String nowtime = getCurrentDate().format(format_y); |
| | | return nowtime; |
| | | } |
| | | |
| | | /** |
| | | * 获取当前年第一天 |
| | | * @return 当前年第一天时间 |
| | | */ |
| | | public static Date getFirstDayOfYear() { |
| | | Calendar currCal=Calendar.getInstance(); |
| | | int currentYear = currCal.get(Calendar.YEAR); |
| | | return getYearFirst(currentYear); |
| | | } |
| | | |
| | | /** |
| | | * 获取某年第一天日期 |
| | | * @param year 年份 |
| | | * @return Date |
| | | */ |
| | | public static Date getYearFirst(int year){ |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.clear(); |
| | | calendar.set(Calendar.YEAR, year); |
| | | Date currYearFirst = calendar.getTime(); |
| | | return currYearFirst; |
| | | } |
| | | |
| | | /** |
| | | * 获取上月第一天时间 |
| | | * @return 上月第一天时间 |
| | | */ |
| | | public static Date getLastMonthFirst(){ |
| | | // 上月起始 |
| | | Calendar lastMonthFirstDateCal = Calendar.getInstance(); |
| | | lastMonthFirstDateCal.add(Calendar.MONTH,-1); |
| | | lastMonthFirstDateCal.set(Calendar.DAY_OF_MONTH, 1); |
| | | String lastMonthFirstTime = yyyyMMdd_format.format(lastMonthFirstDateCal.getTime()) + " 00:00:00"; |
| | | return stringToDateStandard(lastMonthFirstTime); |
| | | } |
| | | |
| | | /** |
| | | * 获取上月最后一天时间 |
| | | * @return 最后一天时间 |
| | | */ |
| | | public static Date getLastMonthEnd(){ |
| | | // 上月末尾 |
| | | Calendar lastMonthEndDateCal = Calendar.getInstance(); |
| | | lastMonthEndDateCal.add(Calendar.MONTH,-1); |
| | | lastMonthEndDateCal.set(Calendar.DAY_OF_MONTH, lastMonthEndDateCal.getActualMaximum(Calendar.DAY_OF_MONTH)); |
| | | String lastMonthEndTime = yyyyMMdd_format.format(lastMonthEndDateCal.getTime()) + " 23:59:59"; |
| | | return stringToDateStandard(lastMonthEndTime); |
| | | } |
| | | |
| | | /** |
| | | * 获取近20天日期 |
| | | * @return 近20天日期 |
| | | */ |
| | | public static List<Date> getOldDays() { |
| | | List<Date> dates = new ArrayList<>(); |
| | | Date date = new Date(); |
| | | for (int i = 19; i >= 0; i--) { |
| | | Date date1 = DateUtils.addDay(date, -i); |
| | | dates.add(date1); |
| | | } |
| | | return dates; |
| | | } |
| | | |
| | | /** |
| | | * 获取上月最后一天时间 |
| | | * @return 上月最后一天时间 |
| | | */ |
| | | public static String getOldMonthLastDay(){ |
| | | Calendar calendar=Calendar.getInstance(); |
| | | int month=calendar.get(Calendar.MONTH); |
| | | calendar.set(Calendar.MONTH, month-1); |
| | | calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); |
| | | return format_yyymmdd.format(calendar.getTime()); |
| | | } |
| | | |
| | | /** |
| | | * 获取上月第一天时间 |
| | | * @return 上月第一天时间 |
| | | */ |
| | | public static String getOldMonthFirstDay(){ |
| | | Calendar calendar=Calendar.getInstance(); |
| | | calendar.add(Calendar.MONTH, -1); |
| | | calendar.set(Calendar.DAY_OF_MONTH, 1); |
| | | return format_yyymmdd.format(calendar.getTime()); |
| | | } |
| | | |
| | | /** |
| | | * 获取某年的月份最后一天时间 |
| | | * @param year 年份 |
| | | * @return 月份list |
| | | */ |
| | | public static List<String> getYearLastMonths(Integer year){ |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(getLastDayOfMonth(year,1)); |
| | | list.add(getLastDayOfMonth(year,2)); |
| | | list.add(getLastDayOfMonth(year,3)); |
| | | list.add(getLastDayOfMonth(year,4)); |
| | | list.add(getLastDayOfMonth(year,5)); |
| | | list.add(getLastDayOfMonth(year,6)); |
| | | list.add(getLastDayOfMonth(year,7)); |
| | | list.add(getLastDayOfMonth(year,8)); |
| | | list.add(getLastDayOfMonth(year,9)); |
| | | list.add(getLastDayOfMonth(year,10)); |
| | | list.add(getLastDayOfMonth(year,11)); |
| | | list.add(getLastDayOfMonth(year,12)); |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 获取某年的月份第一天时间 |
| | | * @param year 年份 |
| | | * @return 月份list |
| | | */ |
| | | public static List<String> getYearFirstMonths(Integer year){ |
| | | List<String> list = new ArrayList<>(); |
| | | list.add(getFirstDayOfMonth(year,1)); |
| | | list.add(getFirstDayOfMonth(year,2)); |
| | | list.add(getFirstDayOfMonth(year,3)); |
| | | list.add(getFirstDayOfMonth(year,4)); |
| | | list.add(getFirstDayOfMonth(year,5)); |
| | | list.add(getFirstDayOfMonth(year,6)); |
| | | list.add(getFirstDayOfMonth(year,7)); |
| | | list.add(getFirstDayOfMonth(year,8)); |
| | | list.add(getFirstDayOfMonth(year,9)); |
| | | list.add(getFirstDayOfMonth(year,10)); |
| | | list.add(getFirstDayOfMonth(year,11)); |
| | | list.add(getFirstDayOfMonth(year,12)); |
| | | return list; |
| | | } |
| | | |
| | | /** |
| | | * 获取某年某月最后一天 |
| | | * @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); |
| | | //格式化日期 |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | String lastDayOfMonth = sdf.format(cal.getTime()); |
| | | return lastDayOfMonth; |
| | | } |
| | | |
| | | /** |
| | | * 获取某年某月的第一天 |
| | | * @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 firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH); |
| | | //设置日历中月份的最小天数 |
| | | cal.set(Calendar.DAY_OF_MONTH, firstDay); |
| | | //格式化日期 |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | String firstDayOfMonth = sdf.format(cal.getTime()); |
| | | |
| | | return firstDayOfMonth; |
| | | } |
| | | |
| | | /** |
| | | * 获取20天前那天时间 |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getTwentyDay() { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(new Date()); |
| | | cal.add(Calendar.DATE, -20); |
| | | |
| | | return DateUtil.format(cal.getTime(),"yyyy-MM-dd"); |
| | | } |
| | | |
| | | /** |
| | | * 获取之前的日期 |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getBeforeDay(Integer amount) { |
| | | Calendar cal = Calendar.getInstance(); |
| | | cal.setTime(new Date()); |
| | | cal.add(Calendar.DATE, -amount); |
| | | return DateUtil.format(cal.getTime(),"yyyy-MM-dd"); |
| | | } |
| | | |
| | | /** |
| | | * 获取最近本月20天数据 |
| | | * |
| | | * @return |
| | | */ |
| | | public static String getMonthTwentyDay() { |
| | | Date date = new Date(); |
| | | Long offset = DateUtil.between(new Date(), DateUtil.beginOfMonth(date), DateUnit.DAY); |
| | | if (offset >= 20) { |
| | | return getTwentyDay(); |
| | | } else { |
| | | //距离月初不足20天 |
| | | Calendar calendar = new GregorianCalendar(); |
| | | calendar.setTime(date); |
| | | //获得本月第一天 |
| | | calendar.add(Calendar.MONTH, 0); |
| | | calendar.set(Calendar.DAY_OF_MONTH, 1); |
| | | return DateUtil.format(calendar.getTime(),"yyyy-MM-dd"); |
| | | } |
| | | |
| | | } |
| | | |
| | | public static List<String> getBeforeDays(int before) { |
| | | List<String> dates = new ArrayList<>(); |
| | | for (int i = before; i >= 0; i--) { |
| | | dates.add(getBeforeDay(i)); |
| | | } |
| | | return dates; |
| | | } |
| | | |
| | | /** |
| | | * 获取当年所有月份 |
| | | * |
| | | * @return |
| | | */ |
| | | public static List<String> getYearMonths() { |
| | | Calendar instance = Calendar.getInstance(); |
| | | int year = instance.get(Calendar.YEAR); |
| | | List<String> months = new ArrayList<>(); |
| | | for (int i = 1; i <= 12; i++) { |
| | | String result = String.valueOf(year); |
| | | if (i < 10) { |
| | | result = result + "-0" +i; |
| | | } else { |
| | | result = result + "-"+i; |
| | | } |
| | | months.add(result); |
| | | } |
| | | return months; |
| | | } |
| | | |
| | | //获取当前12个月 |
| | | public static List<String> getLatest12Month(LocalDate date,int num){ |
| | | List<String> monthList = new ArrayList<>(); |
| | | for(int i = 0;i <= num-1; i++){ |
| | | LocalDate localDate = date.minusMonths(i); |
| | | String month = localDate.toString().substring(0,7); |
| | | monthList.add(month); |
| | | } |
| | | return monthList; |
| | | } |
| | | |
| | | |
| | | } |