From 28e8b38e9de8cc76084d0af6a96d2d9d1e1f739f Mon Sep 17 00:00:00 2001 From: yanghui <2536613402@qq.com> Date: 星期四, 27 十月 2022 13:28:32 +0800 Subject: [PATCH] Merge branch 'local_20221024' into haucheng_panzhihua --- springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java | 322 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 281 insertions(+), 41 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java index d220a6d..1003da6 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java +++ b/springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java @@ -4,9 +4,10 @@ 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 @@ -23,6 +24,8 @@ 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"); @@ -49,7 +52,7 @@ /** * 字符串转date - * + * * @param date * 时间戳 * @param format @@ -70,7 +73,7 @@ /** * 字符串转date - * + * * @param date * 时间戳 * @return 时间 @@ -96,7 +99,7 @@ /** * 字符串转date - * + * * @param date * 时间戳 * @return 时间 @@ -115,7 +118,7 @@ /** * 获取当前时间 - * + * * @return * @throws Exception */ @@ -126,7 +129,7 @@ /** * 返回当前事件的时间戳 - * + * * @return */ public static Long getCurrentDateTimeStamp() { @@ -135,7 +138,7 @@ /** * 获取当前时间字符串,格式为yyyy-MM-dd HH:mm:ss - * + * * @return */ public static String getCurrentDateStr() { @@ -155,7 +158,7 @@ /** * 获取当前时间字符串,格式为yyyyMMdd - * + * * @return */ public static String getCurrentDateString() { @@ -165,7 +168,7 @@ /** * 获取当前时间字符串,格式为yyyy-MM-dd - * + * * @return */ public static String getCurrentDateStrymd() { @@ -180,7 +183,7 @@ /** * 获取当前时间long值 - * + * * @return */ public static long getCurrentDataLong() { @@ -189,7 +192,7 @@ /** * 获取当前时间 - * + * * @param format * @return * @throws Exception @@ -294,7 +297,7 @@ /** * 对日期进行加法操作 - * + * * @param date * @param hours * @return @@ -311,7 +314,7 @@ /** * 对日期的分钟进行加法操作 - * + * * @param date * @param minutes * @return @@ -386,7 +389,7 @@ /** * 计算两个日期先差多少秒 - * + * * @param pre * 前一个日期 * @param after @@ -399,7 +402,7 @@ /** * 计算两个时间相差的天数 - * + * * @param stardate * @param enddate * @return @@ -412,16 +415,16 @@ 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 */ @@ -440,7 +443,7 @@ /** * 获取某个时间段之前的时间点 - * + * * @return */ public static String getSomeTimeStapStr(String sign) { @@ -485,7 +488,7 @@ /** * 获取失效时间点(在什么时间失效) - * + * * @param minutes * 有效分钟数 * @return @@ -496,7 +499,7 @@ /** * 获取当前年份 - * + * * @return */ public static String getCurrentYear() { @@ -506,7 +509,7 @@ /** * 获取当前月份 - * + * * @return */ public static String getCurrentMonth() { @@ -523,7 +526,7 @@ /** * 获取无符号的当前时间 - * + * * @return */ public static String getCurrentDateStrNoSignal() { @@ -532,7 +535,7 @@ /** * 获取前几个小时的时间 - * + * * @param hours * @return */ @@ -548,7 +551,7 @@ /** * 小时取整 - * + * * @param date * @param hour * @return @@ -569,7 +572,7 @@ /** * 分钟取整 以十分钟为单位 ,去除尾端,加上 参数 46->40+minutes*10 - * + * * @param date * @param minutes * @return @@ -597,7 +600,7 @@ /** * 天数取整 - * + * * @param date * @param day * @return @@ -618,7 +621,7 @@ /** * 日期相加减 - * + * * @param time * 时间字符串 yyyy-MM-dd HH:mm:ss * @param num @@ -680,7 +683,7 @@ /** * 获取当前月第一天 - * + * * @return */ public static Date getFirstDayOfMonth() { @@ -693,7 +696,7 @@ /** * 获取当前年月的第一天时间 - * + * * @param year * 年份 * @param month @@ -717,7 +720,7 @@ /** * 获取当前年月的最后一天时间 - * + * * @param year * 年份 * @param month @@ -777,7 +780,7 @@ /** * date2比date1多的天数 - * + * * @param date1 * @param date2 * @return @@ -815,8 +818,28 @@ } /** + * 计算剩余天数,不足一天按一天算 + * @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() { @@ -832,7 +855,7 @@ /** * 获取当前月最后一天 - * + * * @return */ public static String getLastDayOfMonthString() { @@ -845,10 +868,25 @@ 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() { @@ -888,10 +926,11 @@ } public static void main(String[] args) throws Exception { - // Date date= new Date(); - // Date after = new Date(); - // System.out.println(getFirstDayOfMonthString()); - // System.out.println(getDayOfMonthString()); + Date date= getLastMonthFirst(); + Date after = getLastMonthEnd(); + System.out.println(date); + System.out.println(after); + System.out.println(getMonthTwentyDay()); } /** @@ -934,4 +973,205 @@ 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"); + } + + } } -- Gitblit v1.7.1