From 179c4d64313c9b7572778da4aaaf6c6584fe457d Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 20 五月 2025 23:48:08 +0800 Subject: [PATCH] 修改文件上传类型限制 --- springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/DateUtils.java | 840 ++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 676 insertions(+), 164 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 436681b..71bfc6d 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 @@ -1,45 +1,44 @@ package com.panzhihua.common.utlis; -import lombok.extern.slf4j.Slf4j; - import java.text.ParseException; 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 class DateUtils { - public static DateTimeFormatter format_ymdhms = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - - private static DateTimeFormatter format_ymdhmssss = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); - - private static DateTimeFormatter format_ymds = DateTimeFormatter.ofPattern("yyyyMMdd"); - 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 SimpleDateFormat ymdhms_format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - + public static SimpleDateFormat ymdhm_format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 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"); /** * 将日期对象格式化成指定的字符串格式 * - * @param date 日期对象 - * @param formatString 格式化字符串 + * @param date + * 日期对象 + * @param formatString + * 格式化字符串 * @return String */ public static String getDateFormatString(Date date, String formatString) { @@ -54,42 +53,46 @@ /** * 字符串转date - * @param date 时间戳 - * @param format format + * + * @param date + * 时间戳 + * @param format + * format * @return 时间 */ - public static Date stringToDate(String date,SimpleDateFormat format){ + public static Date stringToDate(String date, SimpleDateFormat format) { try { - if(StringUtils.isBlank(date)){ + if (StringUtils.isBlank(date)) { return null; } return format.parse(date); } catch (ParseException e) { - log.error(e.getMessage(),e); + log.error(e.getMessage(), e); } return null; } - /** * 字符串转date - * @param date 时间戳 + * + * @param date + * 时间戳 * @return 时间 */ - public static Date stringToDateStandard (String date){ + public static Date stringToDateStandard(String date) { SimpleDateFormat format = ymdhms_format; - if(StringUtils.isNotBlank(date)){ - if(date.split("-").length==3){ - if(date.split(":").length!=3){ + if (StringUtils.isNotBlank(date)) { + if (date.split("-").length == 3) { + if (date.split(":").length != 3) { format = yyyyMMdd_format; } - }else if(date.split("-").length==2){ + } else if (date.split("-").length == 2) { format = new SimpleDateFormat("yyyy-MM"); } try { return format.parse(date); } catch (ParseException e) { - log.error(e.getMessage(),e); + log.error(e.getMessage(), e); } } return null; @@ -97,97 +100,110 @@ /** * 字符串转date - * @param date 时间戳 + * + * @param date + * 时间戳 * @return 时间 */ - public static Date stringToDateStandardByYYYY_MM_dd (String date){ + public static Date stringToDateStandardByYYYY_MM_dd(String date) { SimpleDateFormat format = yyyy_MM_dd_format; - if(StringUtils.isNotBlank(date)){ + if (StringUtils.isNotBlank(date)) { try { return format.parse(date); } catch (ParseException e) { - log.error(e.getMessage(),e); + log.error(e.getMessage(), e); } } return null; } - /** * 获取当前时间 + * * @return * @throws Exception */ - public static LocalDateTime getCurrentDate(){ + public static LocalDateTime getCurrentDate() { LocalDateTime now = LocalDateTime.now(); return now; } /** - * 获取当前时间字符串,格式为yyyy-MM-dd HH:mm:ss + * 返回当前事件的时间戳 + * * @return */ - public static String getCurrentDateStr(){ - String nowtime=getCurrentDate().format(format_ymdhms); + public static Long getCurrentDateTimeStamp() { + return LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli(); + } + + /** + * 获取当前时间字符串,格式为yyyy-MM-dd HH:mm:ss + * + * @return + */ + public static String getCurrentDateStr() { + String nowtime = getCurrentDate().format(format_ymdhms); return nowtime; } - public static String getCurrentDateymd(){ - String nowtime=getCurrentDate().format(format_ymdhms_string); + public static String getCurrentDateymd() { + String nowtime = getCurrentDate().format(format_ymdhms_string); return nowtime; } - public static String getCurrentDateyymd(){ - String nowtime=getCurrentDate().format(format_ymd_String); + public static String getCurrentDateyymd() { + String nowtime = getCurrentDate().format(format_ymd_String); return nowtime; } /** * 获取当前时间字符串,格式为yyyyMMdd + * * @return */ - public static String getCurrentDateString(){ - String nowtime=getCurrentDate().format(format_ymds); + public static String getCurrentDateString() { + String nowtime = getCurrentDate().format(format_ymds); return nowtime; } - /** * 获取当前时间字符串,格式为yyyy-MM-dd + * * @return */ - public static String getCurrentDateStrymd(){ - String nowtime=getCurrentDate().format(format_ymd); + public static String getCurrentDateStrymd() { + String nowtime = getCurrentDate().format(format_ymd); return nowtime; } - public static String getCurrentDateStr_MS(){ - String nowtime=getCurrentDate().format(format_ymdhmssss); + public static String getCurrentDateStr_MS() { + String nowtime = getCurrentDate().format(format_ymdhmssss); return nowtime; } /** * 获取当前时间long值 + * * @return */ - public static long getCurrentDataLong(){ + public static long getCurrentDataLong() { return new Date().getTime(); } - - /** * 获取当前时间 + * * @param format * @return * @throws Exception */ - public static Date getCurrentDate(SimpleDateFormat format){ + public static Date getCurrentDate(SimpleDateFormat format) { String tempDate = format.format(new Date()); try { return format.parse(tempDate); } catch (ParseException e) { - log.error(e.getMessage(),e); + log.error(e.getMessage(), e); } return null; } @@ -203,13 +219,13 @@ try { return newFormat.parse(tempDate); } catch (ParseException e) { - log.error(e.getMessage(),e); + log.error(e.getMessage(), e); } return null; } public static String format(Date date, SimpleDateFormat format) { - if(null == date){ + if (null == date) { return ""; } return format.format(date); @@ -224,22 +240,22 @@ public static String formatSecond_ZH_HMS(Integer second) { String result = "0秒"; if (null != second) { - int hours = (int) (second / (60 * 60)); - int minutes = (int) (second / 60 - hours * 60); - int seconds = (int) (second - minutes * 60 - hours * 60 * 60); + int hours = second / (60 * 60); + int minutes = second / 60 - hours * 60; + int seconds = second - minutes * 60 - hours * 60 * 60; String format; Object[] array; if (hours > 0) { format = "%1$,d时%2$,d分%3$,d秒"; - array = new Object[]{hours, minutes, seconds}; + array = new Object[] {hours, minutes, seconds}; } else if (minutes > 0) { format = "%1$,d分%2$,d秒"; - array = new Object[]{minutes, seconds}; + array = new Object[] {minutes, seconds}; } else { format = "%1$,d秒"; - array = new Object[]{seconds}; + array = new Object[] {seconds}; } result = String.format(format, array); } @@ -282,6 +298,7 @@ /** * 对日期进行加法操作 + * * @param date * @param hours * @return @@ -298,6 +315,7 @@ /** * 对日期的分钟进行加法操作 + * * @param date * @param minutes * @return @@ -344,7 +362,7 @@ return 0; } if (null == startDate) { - //当前时间大于endDate + // 当前时间大于endDate if (dateCompare(now, endDate) == 1) { return 1; } else { @@ -352,7 +370,7 @@ } } else { if (null == endDate) { - //当前时间小于startDate + // 当前时间小于startDate if (dateCompare(startDate, now) == 1) { return -1; } else { @@ -372,49 +390,52 @@ /** * 计算两个日期先差多少秒 - * @param pre 前一个日期 - * @param after 后一个日期 + * + * @param pre + * 前一个日期 + * @param after + * 后一个日期 * @return */ - public static long calTimeDifference(Date pre,Date after){ - return (after.getTime()-pre.getTime())/1000; + public static long calTimeDifference(Date pre, Date after) { + return (after.getTime() - pre.getTime()) / 1000; } - - /** * 计算两个时间相差的天数 + * * @param stardate * @param enddate * @return */ - public static int getHour(Date stardate,Date enddate){ + public static int getHour(Date stardate, Date enddate) { long nd = 1000 * 24 * 60 * 60; long nh = 1000 * 60 * 60; long nm = 1000 * 60; - long diff=enddate.getTime()-stardate.getTime(); + long diff = enddate.getTime() - stardate.getTime(); 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 */ public static int getMonthSpace(String enddate, DateTimeFormatter format) { - LocalDate formatted = LocalDate.parse(enddate,format); + LocalDate formatted = LocalDate.parse(enddate, format); LocalDate today = LocalDate.now(); - Period per = Period.between(today,formatted); - if(per.getYears() == 0 ){ + Period per = Period.between(today, formatted); + if (per.getYears() == 0) { return per.getMonths(); - }else if(per.getYears() > 0 ){ + } else if (per.getYears() > 0) { return (per.getYears() * 12) + per.getMonths(); } @@ -423,102 +444,105 @@ /** * 获取某个时间段之前的时间点 + * * @return */ - public static String getSomeTimeStapStr(String sign){ - LocalDateTime beginDateTime =null; - if (sign.equals("day")) {//一天前时间 - beginDateTime =LocalDateTime.now().minusDays(1L); - }else if(sign.equals("week")){ - beginDateTime =LocalDateTime.now().minusWeeks(1L); - }else if (sign.equals("month")) { - beginDateTime =LocalDateTime.now().minusMonths(1L); - }else if (sign.equals("year")) { - beginDateTime =LocalDateTime.now().minusYears(1L); + public static String getSomeTimeStapStr(String sign) { + LocalDateTime beginDateTime = null; + if (sign.equals("day")) {// 一天前时间 + beginDateTime = LocalDateTime.now().minusDays(1L); + } else if (sign.equals("week")) { + beginDateTime = LocalDateTime.now().minusWeeks(1L); + } else if (sign.equals("month")) { + beginDateTime = LocalDateTime.now().minusMonths(1L); + } else if (sign.equals("year")) { + beginDateTime = LocalDateTime.now().minusYears(1L); } - String beginTime=beginDateTime.format(format_ymdhms); + String beginTime = beginDateTime.format(format_ymdhms); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { long timestap = sdf.parse(beginTime).getTime(); - beginTime = timestap+""; + beginTime = timestap + ""; } catch (ParseException e) { e.printStackTrace(); } return beginTime; } - public static String getSomeTimeDateStr(String sign){ - String beginTime=""; - LocalDateTime beginDateTime =null; - if (sign.equals("day")) {//一天前时间 - beginDateTime =LocalDateTime.now().minusDays(1L); - }else if(sign.equals("week")){ - beginDateTime =LocalDateTime.now().minusWeeks(1L); - }else if (sign.equals("month")) { - beginDateTime =LocalDateTime.now().minusMonths(1L); - }else if (sign.equals("year")) { - beginDateTime =LocalDateTime.now().minusYears(1L); + public static String getSomeTimeDateStr(String sign) { + String beginTime = ""; + LocalDateTime beginDateTime = null; + if (sign.equals("day")) {// 一天前时间 + beginDateTime = LocalDateTime.now().minusDays(1L); + } else if (sign.equals("week")) { + beginDateTime = LocalDateTime.now().minusWeeks(1L); + } else if (sign.equals("month")) { + beginDateTime = LocalDateTime.now().minusMonths(1L); + } else if (sign.equals("year")) { + beginDateTime = LocalDateTime.now().minusYears(1L); } - if (beginDateTime!=null) { + if (beginDateTime != null) { beginTime = beginDateTime.format(format_ymdhms); } return beginTime; } - /** * 获取失效时间点(在什么时间失效) - * @param minutes 有效分钟数 + * + * @param minutes + * 有效分钟数 * @return */ - public static LocalDateTime getInvalidLocalDateTime(Long minutes){ + public static LocalDateTime getInvalidLocalDateTime(Long minutes) { return LocalDateTime.now().minusMinutes(minutes); } - /** * 获取当前年份 + * * @return */ - public static String getCurrentYear(){ + public static String getCurrentYear() { Calendar instance = Calendar.getInstance(); - return instance.get(Calendar.YEAR)+""; + return instance.get(Calendar.YEAR) + ""; } - /** * 获取当前月份 + * * @return */ - public static String getCurrentMonth(){ + public static String getCurrentMonth() { Calendar instance = Calendar.getInstance(); int month = instance.get(Calendar.MONTH); String result; - if (month < 10){ + if (month < 10) { result = "0" + month; - }else { - result = month+""; + } else { + result = month + ""; } return result; } - /** 获取无符号的当前时间 + /** + * 获取无符号的当前时间 + * * @return */ - public static String getCurrentDateStrNoSignal(){ + public static String getCurrentDateStrNoSignal() { return getCurrentDate().format(format_ymdhms_no_signal); } - /** * 获取前几个小时的时间 + * * @param hours * @return */ - public static String getNextHourDateStrNoSignal(long hours){ + public static String getNextHourDateStrNoSignal(long hours) { return LocalDateTime.now().plusHours(hours).format(format_ymdhms_no_signal); } - public static Date localDateTimeToDate(LocalDateTime localDateTime) { ZoneId zone = ZoneId.systemDefault(); @@ -528,15 +552,16 @@ /** * 小时取整 + * * @param date * @param hour * @return */ - public static Date integralHour(Date date,Integer hour) { - if(date==null||hour==null){ + public static Date integralHour(Date date, Integer hour) { + if (date == null || hour == null) { return null; } - long l = date.getTime()- 1; + long l = date.getTime() - 1; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:00:00"); try { Date parse = sdf.parse(sdf.format(new Date(l))); @@ -547,24 +572,24 @@ } /** - * 分钟取整 - * 以十分钟为单位 ,去除尾端,加上 参数 46->40+minutes*10 + * 分钟取整 以十分钟为单位 ,去除尾端,加上 参数 46->40+minutes*10 + * * @param date * @param minutes * @return */ - public static Date integral10Min(Date date,Integer minutes) { - if(date==null||minutes==null){ + public static Date integral10Min(Date date, Integer minutes) { + if (date == null || minutes == null) { return null; } Calendar cal = Calendar.getInstance(); cal.setTime(date); - int i = cal.get(Calendar.MINUTE);//获取分钟 - if(i%10==0){ + int i = cal.get(Calendar.MINUTE);// 获取分钟 + if (i % 10 == 0) { minutes--; } - minutes=minutes*10-i%10; - long l = date.getTime()- 1; + minutes = minutes * 10 - i % 10; + long l = date.getTime() - 1; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:00"); try { Date parse = sdf.parse(sdf.format(new Date(l))); @@ -576,15 +601,16 @@ /** * 天数取整 + * * @param date * @param day * @return */ - public static Date integralDay(Date date,Integer day) { - if(date==null||day==null){ + public static Date integralDay(Date date, Integer day) { + if (date == null || day == null) { return null; } - long l = date.getTime()- 1; + long l = date.getTime() - 1; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00"); try { Date parse = sdf.parse(sdf.format(new Date(l))); @@ -596,17 +622,17 @@ /** * 日期相加减 + * * @param time - * 时间字符串 yyyy-MM-dd HH:mm:ss + * 时间字符串 yyyy-MM-dd HH:mm:ss * @param num - * 加的数,-num就是减去 - * @return - * 减去相应的数量的年的日期 + * 加的数,-num就是减去 + * @return 减去相应的数量的年的日期 * @throws ParseException */ public static Date yearAddNum(Date time, Integer num) { - //SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - //Date date = format.parse(time); + // SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // Date date = format.parse(time); Calendar calendar = Calendar.getInstance(); calendar.setTime(time); @@ -615,10 +641,36 @@ return newTime; } + public static boolean isValidDate(String str) { + boolean convertSuccess = true; + SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd"); + try { + format.setLenient(false); + format.parse(str); + } catch (ParseException e) { + convertSuccess = false; + } + return convertSuccess; + } + + public static Date toValidDate(String str) { + Date date = null; + SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd"); + try { + format.setLenient(false); + date = format.parse(str); + } catch (ParseException e) { + log.error("党员导入日期格式错误"); + date = new Date(); + } + return date; + } + /** * 将日期对象格式化成yyyy-MM-dd格式的字符串 * - * @param date 日期对象 + * @param date + * 日期对象 * @return String */ public static String getDateStringYMD(Date date) { @@ -632,23 +684,27 @@ /** * 获取当前月第一天 + * * @return */ public static Date getFirstDayOfMonth() { Calendar cal = Calendar.getInstance(); - cal.add(Calendar.MONTH,0); + cal.add(Calendar.MONTH, 0); int actualMinimum = cal.getActualMinimum(Calendar.DAY_OF_MONTH); - cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY),actualMinimum,00,00,00); + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), actualMinimum, 00, 00, 00); return cal.getTime(); } /** * 获取当前年月的第一天时间 - * @param year 年份 - * @param month 月份 - * @return 时间 + * + * @param year + * 年份 + * @param month + * 月份 + * @return 时间 */ - public static Date getYearMonthStart(Integer year,Integer month) { + public static Date getYearMonthStart(Integer year, Integer month) { Calendar cal = Calendar.getInstance(); // 设置年份 cal.set(Calendar.YEAR, year); @@ -659,17 +715,20 @@ // 设置日历中月份的最小天数 cal.set(Calendar.DAY_OF_MONTH, firstDay); int actualMinimum = cal.getActualMinimum(Calendar.DAY_OF_MONTH); - cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY),actualMinimum,00,00,00); + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), actualMinimum, 00, 00, 00); return cal.getTime(); } /** * 获取当前年月的最后一天时间 - * @param year 年份 - * @param month 月份 - * @return 时间 + * + * @param year + * 年份 + * @param month + * 月份 + * @return 时间 */ - public static Date getYearMonthEnd(Integer year,Integer month) { + public static Date getYearMonthEnd(Integer year, Integer month) { Calendar cal = Calendar.getInstance(); // 设置年份 cal.set(Calendar.YEAR, year); @@ -680,31 +739,484 @@ // 设置日历中月份的最大天数 cal.set(Calendar.DAY_OF_MONTH, lastDay); int actualMinimum = cal.getActualMinimum(Calendar.DAY_OF_MONTH); - cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY),actualMinimum,00,00,00); + cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), actualMinimum, 00, 00, 00); return cal.getTime(); } - public static Date getDateM(Date start, int min) { + public static Date getDateM(Date start, int min) { Calendar date1 = Calendar.getInstance(); date1.setTime(start); date1.add(Calendar.MONTH, min); return date1.getTime(); } - public static int getMonth(Date date){ + public static Date parseDateYM(String str) { + try { + return yyyyMM_format.parse(str); + } catch (ParseException e) { + e.printStackTrace(); + } + return null; + } + + public static int getMonth(Date date) { Calendar instance = Calendar.getInstance(); instance.setTime(date); 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); + Calendar date2 = Calendar.getInstance(); + date2.setTime(end); + return date1.before(date2); + } - public static void main(String[]args)throws Exception{ -// Date date= new Date(); -// Date after = new Date(); -// System.out.println(calTimeDifference(date,after)); - System.out.println(getYearMonthStart(2021,2)); + /** + * date2比date1多的天数 + * + * @param date1 + * @param date2 + * @return + */ + public static int differentDays(Date date1, Date date2) { + Calendar cal1 = Calendar.getInstance(); + cal1.setTime(date1); + + Calendar cal2 = Calendar.getInstance(); + cal2.setTime(date2); + int day1 = cal1.get(Calendar.DAY_OF_YEAR); + int day2 = cal2.get(Calendar.DAY_OF_YEAR); + + int year1 = cal1.get(Calendar.YEAR); + int year2 = cal2.get(Calendar.YEAR); + if (year1 != year2) // 同一年 + { + int timeDistance = 0; + for (int i = year1; i < year2; i++) { + if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) // 闰年 + { + timeDistance += 366; + } else // 不是闰年 + { + timeDistance += 365; + } + } + + return timeDistance + (day2 - day1); + } else // 不同年 + { + // System.out.println("判断day2 - day1 : " + (day2-day1)); + return day2 - day1; + } + } + + /** + * 计算剩余天数,不足一天按一天算 + * @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() { + Calendar calendar = Calendar.getInstance(); + + calendar.add(Calendar.MONTH, 0); + + calendar.set(Calendar.DAY_OF_MONTH, 1); + // 格式化日期 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + return sdf.format(calendar.getTime()) + " 00:00:00"; + } + + /** + * 获取当前月最后一天 + * + * @return + */ + public static String getLastDayOfMonthString() { + Calendar calendar = Calendar.getInstance(); + + calendar.add(Calendar.MONTH, 1); + + calendar.set(Calendar.DAY_OF_MONTH, 0); + // 格式化日期 + 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() { + Calendar today = Calendar.getInstance(); + today.set(Calendar.HOUR, 0); + today.set(Calendar.MINUTE, 0); + today.set(Calendar.SECOND, 0); + today.set(Calendar.MILLISECOND, 0); + // 格式化日期 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + return sdf.format(today.getTime()); + } + + /** + * 日期转周 + * + * @param datetime + * @return + */ + public static String dateToWeek(String datetime) { + SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd"); + String[] weekDays = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"}; + Calendar cal = Calendar.getInstance(); // 获得一个日历 + Date datet = null; + try { + if (StringUtils.isNotEmpty(datetime)) { + datet = f.parse(datetime); + cal.setTime(datet); + } + } catch (ParseException e) { + e.printStackTrace(); + } + int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一个周中的某天。 + if (w < 0) + w = 0; + return weekDays[w]; + } + + public static void main(String[] args) throws Exception { +// 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; + } + + +} -- Gitblit v1.7.1