| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912 |
- package com.zhongshu.card.client.utils;
- import com.zhongshu.card.client.type.device.WeekDayType;
- import lombok.SneakyThrows;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import java.sql.Timestamp;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.time.*;
- import java.time.format.DateTimeFormatter;
- import java.time.temporal.IsoFields;
- import java.time.temporal.WeekFields;
- import java.util.*;
- @Slf4j
- public class DateUtils {
- public final static String FORMAT_LONG = "yyyy-MM-dd HH:mm:ss";
- public final static String pattern = "yyyy-MM-dd";
- /**
- * yyyyMMdd
- */
- public final static String pattern1 = "yyyyMMdd";
- public final static String patternyyyyMMDD = "yyyyMMdd";
- public final static String patternyyyyMMddHHmmssSSS = "yyyyMMddHHmmssSSS";
- public final static String patternStr = "yyyy年MM月dd日";
- public final static String patternyyyyMM = "yyyy-MM";
- public final static String patternyyyyM = "yyyy-M";
- public final static String patternHHmm = "HH:mm";
- public final static String patternyyyyMis = "yyyy-MM-dd HH:mm";
- public final static String patternyyyySSS = "yyyy-MM-dd HH:mm:ss SSS";
- public final static String patternyyyy = "yyyy";
- public final static String patternMM = "MM";
- public final static String patternWx = "yyyy-MM-dd'T'HH:mm:ssXXX";
- public final static String unionAuth = "yyyyMMddHHmmss";
- public final static String patternyyyyMMCn = "yyyy年MM月";
- public static Long timeToLong(String time) {
- return timeToLong(time, FORMAT_LONG);
- }
- public static Long timeToLong(String time, String format) {
- if (!org.springframework.util.StringUtils.hasText(time)) {
- return null;
- }
- try {
- return new SimpleDateFormat(format).parse(time).getTime();
- } catch (ParseException e) {
- e.printStackTrace();
- }
- return null;
- }
- @SneakyThrows
- public static Double timeToDouble(String time, String format) {
- assert format != null;
- Long timestamp = null;
- if (StringUtils.isNotBlank(time)) {
- timestamp = new SimpleDateFormat(format).parse(time).getTime();
- }
- if (timestamp != null) {
- return timestamp.doubleValue();
- }
- return null;
- }
- public static String paresTime(Long time, String pattern) {
- if (time == null || time <= 0) {
- return "";
- }
- Date date = new Date(time);
- SimpleDateFormat formatter = new SimpleDateFormat(pattern);
- return formatter.format(date);
- }
- /**
- * 获得本周的第一天,周一
- *
- * @return
- */
- public static Long getCurrentWeekDayStartTime() {
- Calendar c = Calendar.getInstance();
- int weekday = c.get(Calendar.DAY_OF_WEEK) - 2;
- c.add(Calendar.DATE, -weekday);
- c.set(Calendar.HOUR_OF_DAY, 0);
- c.set(Calendar.MINUTE, 0);
- c.set(Calendar.SECOND, 0);
- return c.getTimeInMillis();
- }
- /**
- * 获得上周的第一天,周一
- *
- * @return
- */
- public static Long getBeforeWeekDayStartTime() {
- Calendar c = Calendar.getInstance();
- int weekday = c.get(Calendar.DAY_OF_WEEK) - 2 + 7;
- c.add(Calendar.DATE, -weekday);
- c.set(Calendar.HOUR_OF_DAY, 0);
- c.set(Calendar.MINUTE, 0);
- c.set(Calendar.SECOND, 0);
- return c.getTimeInMillis();
- }
- /**
- * 获得上周的最后一天,周日
- *
- * @return
- */
- public static Long getBeforeWeekDayEndTime() {
- Calendar c = Calendar.getInstance();
- int weekday = c.get(Calendar.DAY_OF_WEEK);
- c.add(Calendar.DATE, 8 - weekday - 7);
- c.set(Calendar.HOUR_OF_DAY, 23);
- c.set(Calendar.MINUTE, 59);
- c.set(Calendar.SECOND, 59);
- return c.getTimeInMillis();
- }
- /**
- * 获得本周的最后一天,周日
- *
- * @return
- */
- public static Long getCurrentWeekDayEndTime() {
- Calendar c = Calendar.getInstance();
- int weekday = c.get(Calendar.DAY_OF_WEEK);
- c.add(Calendar.DATE, 8 - weekday);
- c.set(Calendar.HOUR_OF_DAY, 23);
- c.set(Calendar.MINUTE, 59);
- c.set(Calendar.SECOND, 59);
- return c.getTimeInMillis();
- }
- /**
- * 获得本天的开始时间
- *
- * @return
- */
- public static Date getCurrentDayStartTime() {
- ZoneId zoneId = ZoneId.systemDefault();
- LocalDateTime date = LocalDateTime.now();
- LocalDateTime startOfTheDay = LocalDateTime.of(date.toLocalDate(), LocalTime.MIN);
- Date beginTime = Date.from(startOfTheDay.atZone(zoneId).toInstant());
- return beginTime;
- }
- /**
- * 获得本天的结束时间
- *
- * @return
- */
- public static Date getCurrentDayEndTime() {
- ZoneId zoneId = ZoneId.systemDefault();
- LocalDateTime date = LocalDateTime.now();
- LocalDateTime startOfTheDay = LocalDateTime.of(date.toLocalDate(), LocalTime.MAX);
- Date beginTime = Date.from(startOfTheDay.atZone(zoneId).toInstant());
- return beginTime;
- }
- /**
- * 得到当前是本周第几天
- *
- * @return
- */
- public static int getCurrentWeekDay() {
- Calendar c = Calendar.getInstance();
- int weekday = c.get(Calendar.DAY_OF_WEEK);
- return weekday - 1;
- }
- /**
- * 当前是今年第几周
- *
- * @return
- */
- public static int getCurrentWeekInYear() {
- LocalDate date = LocalDate.now(); // 获取当前日期
- int weekOfYear = date.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);
- return weekOfYear;
- }
- /**
- * 得到当前是第几月份,如:8
- *
- * @return
- */
- public static int getCurrentMonthInYear() {
- LocalDate date = LocalDate.now(); // 获取当前日期
- return date.getMonthValue();
- }
- /**
- * 得到当前年份,如:2024
- *
- * @return
- */
- public static int getCurrentYear() {
- LocalDate date = LocalDate.now(); // 获取当前日期
- return date.getYear();
- }
- /**
- * 在月份的第几天
- *
- * @return
- */
- public static int getCurrentDayInMonth() {
- LocalDate date = LocalDate.now();
- return date.getDayOfMonth();
- }
- /**
- * 在年的第几天
- *
- * @return
- */
- public static int getCurrentDayInYear() {
- LocalDate date = LocalDate.now();
- return date.getDayOfYear();
- }
- /**
- * 当前的第几小时
- *
- * @return
- */
- public static int getCurrentHourOfDay() {
- Calendar calendar = Calendar.getInstance();
- return calendar.get(Calendar.HOUR_OF_DAY);
- }
- /**
- * 获得本小时的开始时间
- *
- * @return
- */
- public static Long getCurrentHourStartTime() {
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.MINUTE, 0);
- calendar.set(Calendar.SECOND, 0);
- return calendar.getTimeInMillis();
- }
- /**
- * 获得本小时的结束时间
- *
- * @return
- */
- public static Long getCurrentHourEndTime() {
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.MINUTE, 59);
- calendar.set(Calendar.SECOND, 59);
- return calendar.getTimeInMillis();
- }
- /**
- * 获得本月的开始时间
- *
- * @return
- */
- public static Long getCurrentMonthStartTime() {
- Calendar c = Calendar.getInstance();
- c.set(Calendar.DATE, 1);
- c.set(Calendar.HOUR_OF_DAY, 0);
- c.set(Calendar.MINUTE, 0);
- c.set(Calendar.SECOND, 0);
- return c.getTimeInMillis();
- }
- /**
- * 获得上个月的开始时间
- *
- * @return
- */
- public static Long getBeforeMonthStartTime() {
- Calendar c = Calendar.getInstance();
- c.add(Calendar.MONTH, -1);
- c.set(Calendar.DATE, 1);
- c.set(Calendar.HOUR_OF_DAY, 0);
- c.set(Calendar.MINUTE, 0);
- c.set(Calendar.SECOND, 0);
- return c.getTimeInMillis();
- }
- /**
- * 本月的结束时间
- *
- * @return
- */
- public static Long getCurrentMonthEndTime() {
- Calendar c = Calendar.getInstance();
- c.set(Calendar.DATE, 1);
- c.add(Calendar.MONTH, 1);
- c.add(Calendar.DATE, -1);
- c.set(Calendar.HOUR_OF_DAY, 23);
- c.set(Calendar.MINUTE, 59);
- c.set(Calendar.SECOND, 59);
- return c.getTimeInMillis();
- }
- public static Long getBeforeMonthEndTime() {
- Calendar c = Calendar.getInstance();
- c.set(Calendar.DATE, 1);
- c.add(Calendar.DATE, -1);
- c.set(Calendar.HOUR_OF_DAY, 23);
- c.set(Calendar.MINUTE, 59);
- c.set(Calendar.SECOND, 59);
- return c.getTimeInMillis();
- }
- /**
- * 当前年的开始时间
- *
- * @return
- */
- public static Long getCurrentYearStartTime() {
- Calendar c = Calendar.getInstance();
- c.set(Calendar.MONTH, 0);
- c.set(Calendar.DATE, 1);
- c.set(Calendar.HOUR_OF_DAY, 0);
- c.set(Calendar.MINUTE, 0);
- c.set(Calendar.SECOND, 0);
- return c.getTimeInMillis();
- }
- /**
- * 当前年的结束时间
- *
- * @return
- */
- public static Long getCurrentYearEndTime() {
- Calendar c = Calendar.getInstance();
- Date now = null;
- c.set(Calendar.MONTH, 11);
- c.set(Calendar.DATE, 31);
- c.set(Calendar.HOUR_OF_DAY, 23);
- c.set(Calendar.MINUTE, 59);
- c.set(Calendar.SECOND, 59);
- return c.getTimeInMillis();
- }
- /**
- * 当前季度的开始时间
- *
- * @return
- */
- public static Long getCurrentQuarterStartTime() {
- Calendar c = Calendar.getInstance();
- int currentMonth = c.get(Calendar.MONTH) + 1;
- if (currentMonth >= 1 && currentMonth <= 3)
- c.set(Calendar.MONTH, 0);
- else if (currentMonth >= 4 && currentMonth <= 6)
- c.set(Calendar.MONTH, 3);
- else if (currentMonth >= 7 && currentMonth <= 9)
- c.set(Calendar.MONTH, 4);
- else if (currentMonth >= 10 && currentMonth <= 12)
- c.set(Calendar.MONTH, 9);
- c.set(Calendar.DATE, 1);
- c.set(Calendar.HOUR_OF_DAY, 0);
- c.set(Calendar.MINUTE, 0);
- c.set(Calendar.SECOND, 0);
- return c.getTimeInMillis();
- }
- /**
- * 当前季度的结束时间
- *
- * @return
- */
- public static Long getCurrentQuarterEndTime() {
- Calendar c = Calendar.getInstance();
- int currentMonth = c.get(Calendar.MONTH) + 1;
- Date now = null;
- try {
- if (currentMonth >= 1 && currentMonth <= 3) {
- c.set(Calendar.MONTH, 2);
- c.set(Calendar.DATE, 31);
- } else if (currentMonth >= 4 && currentMonth <= 6) {
- c.set(Calendar.MONTH, 5);
- c.set(Calendar.DATE, 30);
- } else if (currentMonth >= 7 && currentMonth <= 9) {
- c.set(Calendar.MONTH, 8);
- c.set(Calendar.DATE, 30);
- } else if (currentMonth >= 10 && currentMonth <= 12) {
- c.set(Calendar.MONTH, 11);
- c.set(Calendar.DATE, 31);
- }
- c.set(Calendar.HOUR_OF_DAY, 23);
- c.set(Calendar.MINUTE, 59);
- c.set(Calendar.SECOND, 59);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return now.getTime();
- }
- /**
- * 获取前/后半年的开始时间
- *
- * @return
- */
- public static Long getHalfYearStartTime() {
- Calendar c = Calendar.getInstance();
- int currentMonth = c.get(Calendar.MONTH) + 1;
- if (currentMonth >= 1 && currentMonth <= 6) {
- c.set(Calendar.MONTH, 0);
- } else if (currentMonth >= 7 && currentMonth <= 12) {
- c.set(Calendar.MONTH, 6);
- }
- c.set(Calendar.DATE, 1);
- c.set(Calendar.HOUR_OF_DAY, 0);
- c.set(Calendar.MINUTE, 0);
- c.set(Calendar.SECOND, 0);
- return c.getTimeInMillis();
- }
- /**
- * 获取前/后半年的结束时间
- *
- * @return
- */
- public static Long getHalfYearEndTime() {
- Calendar c = Calendar.getInstance();
- int currentMonth = c.get(Calendar.MONTH) + 1;
- if (currentMonth >= 1 && currentMonth <= 6) {
- c.set(Calendar.MONTH, 5);
- c.set(Calendar.DATE, 30);
- } else if (currentMonth >= 7 && currentMonth <= 12) {
- c.set(Calendar.MONTH, 11);
- c.set(Calendar.DATE, 31);
- }
- c.set(Calendar.HOUR_OF_DAY, 23);
- c.set(Calendar.MINUTE, 59);
- c.set(Calendar.SECOND, 59);
- return c.getTimeInMillis();
- }
- public static Date parseStr2Date(String dateStr) {
- SimpleDateFormat longSdf = new SimpleDateFormat(FORMAT_LONG);
- try {
- return longSdf.parse(dateStr);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- public static Date parseStr2Date(String dateStr, String format) {
- SimpleDateFormat longSdf = new SimpleDateFormat(format);
- try {
- if (StringUtils.isNotEmpty(dateStr)) {
- return longSdf.parse(dateStr);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- public static String getShort2Str(Date date) {
- if (date == null) {
- return null;
- }
- SimpleDateFormat shortSdf = new SimpleDateFormat(pattern);
- return shortSdf.format(date);
- }
- /**
- * 毫秒数转时间
- *
- * @return
- */
- public static String millsToDuration(long mills) {
- long dayBal = mills % (86400000);
- int days = Long.valueOf(mills / 86400000).intValue();
- long hourBal = dayBal % (3600000);
- int hours = Long.valueOf(dayBal / (3600000)).intValue();
- long minuteBal = hourBal % (60000);
- int minutes = Long.valueOf(hourBal / (60000)).intValue();
- int seconds = Long.valueOf(Long.valueOf(minuteBal / 1000).intValue()).intValue();
- String str = "";
- if (days > 0) {
- str += days + "天";
- }
- if (hours > 0) {
- str += hours + "小时";
- }
- if (minutes > 0) {
- str += minutes + "分钟";
- }
- if (seconds > 0) {
- str += seconds + "秒";
- }
- return str;
- }
- public static Long getDayStartTime(Long timestamp) {
- ZoneId zoneId = ZoneId.systemDefault();
- LocalDateTime date = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), zoneId);
- LocalDateTime startOfTheDay = LocalDateTime.of(date.toLocalDate(), LocalTime.MIN);
- return Timestamp.valueOf(startOfTheDay).getTime();
- }
- /**
- * 获得本天的结束时间
- *
- * @return
- */
- public static Long getDayEndTime(Long timestamp) {
- ZoneId zoneId = ZoneId.systemDefault();
- LocalDateTime date = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), zoneId);
- LocalDateTime endOfTheDay = LocalDateTime.of(date.toLocalDate(), LocalTime.MAX);
- return Timestamp.valueOf(endOfTheDay).getTime();
- }
- /**
- * 获得时间在当年的周数
- *
- * @return
- */
- public static Integer getWeekOfYear(Long timestamp) {
- ZoneId zoneId = ZoneId.systemDefault();
- LocalDateTime date = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), zoneId);
- // WeekFields.ISO = 一星期从周一开始算, 其它的请自己摸索.
- WeekFields weekFields = WeekFields.ISO;
- int weekNumber = date.get(weekFields.weekOfWeekBasedYear());
- return weekNumber;
- }
- public static Integer getYearWeekCount(Integer year) {
- Calendar c = Calendar.getInstance();
- c.set(Calendar.YEAR, year);
- c.set(Calendar.MONTH, Calendar.DECEMBER);
- c.set(Calendar.DATE, 31);
- Integer weekCount = getWeekOfYear(c.getTimeInMillis());
- //log.info("多少周:{}",weekCount);
- return weekCount;
- }
- public static Long getWeekStartTime(Integer year, Integer week) {
- Calendar c = new GregorianCalendar();
- //获得指定年的第几周的开始日期(dayOfWeek是从周日开始排序的)
- c.setWeekDate(year, week, 2);
- c.set(Calendar.HOUR_OF_DAY, 0);
- c.set(Calendar.MINUTE, 0);
- c.set(Calendar.SECOND, 0);
- //获得Calendar的时间
- Date starttime = c.getTime();
- //log.info("{}年第{}周的开始日期为{}" ,year,week,paresTime(starttime.getTime(),FORMAT_LONG));
- return starttime.getTime();
- }
- public static Long getWeekEndTime(Integer year, Integer week) {
- Calendar c = new GregorianCalendar();
- //获得指定年的第几周的结束日期
- c.setWeekDate(year, week + 1, 1);
- c.set(Calendar.HOUR_OF_DAY, 23);
- c.set(Calendar.MINUTE, 59);
- c.set(Calendar.SECOND, 59);
- Date endtime = c.getTime();
- //将时间戳格式化为指定格式
- //log.info("{}年第{}周的结束日期为{}" ,year,week,paresTime(endtime.getTime(),FORMAT_LONG));
- return endtime.getTime();
- }
- /**
- * 得到上周最后一天
- *
- * @return
- */
- public static Long getPreWeekLastTime() {
- Calendar c = Calendar.getInstance();
- c.setTimeInMillis(System.currentTimeMillis());
- c.add(Calendar.DATE, -7);
- return DateUtils.getWeekEndTime(c.get(Calendar.YEAR), c.get(Calendar.WEEK_OF_YEAR));
- }
- /**
- * 本月的结束时间
- *
- * @return
- */
- public static Long getMonthStartTime(Integer year, Integer month) {
- Calendar c = Calendar.getInstance();
- c.set(Calendar.YEAR, year);
- c.set(Calendar.MONTH, month - 1);
- c.set(Calendar.DATE, 1);
- c.set(Calendar.HOUR_OF_DAY, 0);
- c.set(Calendar.MINUTE, 0);
- c.set(Calendar.SECOND, 0);
- return c.getTimeInMillis();
- }
- /**
- * 本月的结束时间
- *
- * @return
- */
- public static Long getMonthEndTime(Integer year, Integer month) {
- Calendar c = Calendar.getInstance();
- c.set(Calendar.YEAR, year);
- c.set(Calendar.MONTH, month - 1);
- c.add(Calendar.MONTH, 1);
- c.set(Calendar.DAY_OF_MONTH, 0);
- c.set(Calendar.HOUR_OF_DAY, 23);
- c.set(Calendar.MINUTE, 59);
- c.set(Calendar.SECOND, 59);
- return c.getTimeInMillis();
- }
- /**
- * 得到上月最后一天时间
- *
- * @return
- */
- public static Long getPreMonthLastTime() {
- Calendar c = Calendar.getInstance();
- c.add(Calendar.MONTH, -1);
- return getMonthEndTime(c.get(Calendar.YEAR), c.get(Calendar.MONTH) + 1);
- }
- /**
- * 本年的开始时间
- *
- * @return
- */
- public static Long getYearStartTime(Integer year) {
- Calendar c = Calendar.getInstance();
- c.set(Calendar.YEAR, year);
- c.set(Calendar.MONTH, Calendar.JANUARY);
- c.set(Calendar.DATE, 1);
- c.set(Calendar.HOUR_OF_DAY, 0);
- c.set(Calendar.MINUTE, 0);
- c.set(Calendar.SECOND, 0);
- return c.getTimeInMillis();
- }
- /**
- * 本年的开始时间
- *
- * @return
- */
- public static Long getYearEndTime(Integer year) {
- Calendar c = Calendar.getInstance();
- c.set(Calendar.YEAR, year);
- c.set(Calendar.MONTH, Calendar.DECEMBER);
- c.set(Calendar.DATE, 31);
- c.set(Calendar.HOUR_OF_DAY, 23);
- c.set(Calendar.MINUTE, 59);
- c.set(Calendar.SECOND, 59);
- return c.getTimeInMillis();
- }
- /**
- * 得到给定时间的 当天开始时间
- *
- * @param time
- * @return
- */
- public static Long getDayStart(Long time) {
- Calendar calendar = Calendar.getInstance();
- calendar.setTimeInMillis(time);
- calendar.set(Calendar.HOUR_OF_DAY, 0);
- calendar.set(Calendar.MINUTE, 0);
- calendar.set(Calendar.SECOND, 0);
- calendar.set(Calendar.MILLISECOND, 0);
- return calendar.getTimeInMillis();
- }
- /**
- * 得到给定时间的 当天最大时间
- *
- * @param time
- * @return
- */
- public static Long getDayEnd(Long time) {
- Calendar calendar = Calendar.getInstance();
- calendar.setTimeInMillis(time);
- calendar.set(Calendar.HOUR_OF_DAY, 23);
- calendar.set(Calendar.MINUTE, 59);
- calendar.set(Calendar.SECOND, 59);
- return calendar.getTimeInMillis();
- }
- /**
- * 转换日期为:2023-10-10 00:00:00 再加上天数
- *
- * @param time
- * @param days
- * @return
- */
- public static Calendar getCalendarDayAndDays(Long time, int days) {
- Calendar calendar = Calendar.getInstance();
- Date endDate = new Date(time);
- calendar.setTime(endDate);
- calendar.set(Calendar.HOUR_OF_DAY, 0);
- calendar.set(Calendar.MINUTE, 0);
- calendar.set(Calendar.SECOND, 0);
- calendar.set(Calendar.MILLISECOND, 0);
- calendar.add(Calendar.DATE, days);
- return calendar;
- }
- /**
- * 日期加减天数,,中间跳过节假日 (不包括自己)
- *
- * @param time
- * @param days
- * @param holiday
- * @return
- */
- public static Calendar getCalendarDayAndDays(Long time, int days, List<String> holiday) {
- if (holiday == null) {
- holiday = new ArrayList<>();
- }
- Calendar calendar = Calendar.getInstance();
- Date endDate = new Date(time);
- calendar.setTime(endDate);
- calendar.set(Calendar.HOUR_OF_DAY, 0);
- calendar.set(Calendar.MINUTE, 0);
- calendar.set(Calendar.SECOND, 0);
- calendar.set(Calendar.MILLISECOND, 0);
- if (days != 0) {
- boolean isAdd = true;
- if (days < 0) {
- isAdd = false;
- }
- int count = Math.abs(days);
- int sumCount = 0;
- while (true) {
- if (isAdd) {
- calendar.add(Calendar.DATE, 1);
- } else {
- calendar.add(Calendar.DATE, -1);
- }
- String str = DateUtils.paresTime(calendar.getTimeInMillis(), DateUtils.pattern);
- if (!holiday.contains(str)) {
- sumCount++;
- } else {
- log.info("休息日:{}", str);
- }
- if (count == sumCount) {
- break;
- }
- }
- }
- return calendar;
- }
- /**
- * 得到半年前的时间
- * @return
- */
- public static Long getSixMonthsAgo () {
- Calendar calendar = Calendar.getInstance();
- calendar.add(Calendar.MONTH, -6);
- Date sixMonthsAgo = calendar.getTime();
- return sixMonthsAgo.getTime();
- }
- public static List<String> getCurrentIntegralPoint(String pattern) {
- // 获取当前日期
- LocalDate today = LocalDate.now();
- // 创建一个列表来存储格式化后的整点时间
- List<String> formattedWholeHours = new ArrayList<>();
- // 遍历 00:00 到 23:00 的每一个整点
- for (int hour = 0; hour < 24; hour++) {
- LocalTime time = LocalTime.of(hour, 0); // 整点时间
- LocalDateTime dateTime = LocalDateTime.of(today, time);
- // 格式化时间
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
- String formattedDateTime = dateTime.format(formatter);
- // 添加到列表
- formattedWholeHours.add(formattedDateTime);
- }
- return formattedWholeHours;
- }
- public static List<String> getYesterdayIntegralPoint(String pattern) {
- // 获取当前日期
- LocalDate today = LocalDate.now().minusDays(1);
- // 创建一个列表来存储格式化后的整点时间
- List<String> formattedWholeHours = new ArrayList<>();
- // 遍历 00:00 到 23:00 的每一个整点
- for (int hour = 0; hour < 24; hour++) {
- LocalTime time = LocalTime.of(hour, 0); // 整点时间
- LocalDateTime dateTime = LocalDateTime.of(today, time);
- // 格式化时间
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
- String formattedDateTime = dateTime.format(formatter);
- // 添加到列表
- formattedWholeHours.add(formattedDateTime);
- }
- return formattedWholeHours;
- }
- public static void main(String[] args) {
- log.info("本年开始时间:{},结束时间:{}", paresTime(getYearStartTime(2023), FORMAT_LONG), paresTime(getYearEndTime(2023), FORMAT_LONG));
- log.info("本月开始时间:{},结束时间:{}", paresTime(getMonthStartTime(2023, 9), FORMAT_LONG), paresTime(getMonthEndTime(2023, 9), FORMAT_LONG));
- Integer weekNumber = getWeekOfYear(System.currentTimeMillis());
- log.info("本年一共{}周,本周是第{}周,本周时间区间:{}-{}", getYearWeekCount(2023), weekNumber, paresTime(getWeekStartTime(2023, weekNumber), FORMAT_LONG), paresTime(getWeekEndTime(2023, weekNumber), FORMAT_LONG));
- Long time = DateUtils.timeToLong("2024-11-8", "yyyy-MM-dd");
- String s = DateUtils.paresTime(time, "yyyy-MM-dd");
- System.out.println("time : " + time);
- System.out.println("s : " + s);
- }
- public static WeekDayType getTimeWeekData(Long time) {
- Calendar c = Calendar.getInstance();
- c.setTimeInMillis(time);
- int weekDay = c.get(Calendar.DAY_OF_WEEK);
- for (WeekDayType weekDayType : WeekDayType.values()) {
- if (weekDayType.getWeekDay() == weekDay) {
- return weekDayType;
- }
- }
- return null;
- }
- }
|