date tool record

public class DateUtil {

    public static final String DATE_TIME_PATTERN = "yyyyMMddHHmmss";

    public static final String DATE_PATTERN = "yyyy-MM-dd";

    public static final String DATE_PATTERN_NEW = "yyyyMMdd";

    public static final String DATE_PATTERN_YM = "yyyyMM";

    public static final String DATE_TIME_SEPARATOR_PATTERN = "yyyy-MM-dd HH:mm:ss";

    public static final String DATE_PATTERN_CHINESE = "yyyy年MM月dd日";


    public static Long dateString2Long(String date, String format) {
        if (StringUtils.isEmpty(date) || StringUtils.isEmpty(format)) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date d = null;
        try {
            d = sdf.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        if (d != null) {
            return d.getTime() < 0 ? 0 : d.getTime();
        }
        return null;
    }

    public static String format(Date date, String pattern) {
        Instant instant = date.toInstant();
        LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
        return localDateTime.format(dateTimeFormatter);
    }

    /**
     * 日期字符串格式化
     * @param dateStr
     * @param pattern
     * @return
     */
    public static String format(String dateStr, String pattern) {
        LocalDate localDateTime = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern(DATE_PATTERN));
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
        return localDateTime.format(dateTimeFormatter);
    }

    /**
     * 根据输入日期(yyyy-MM-dd)和统计周数获取周和日期集合,默认周数从第一周开始
     * example:
     *  getWeekAndDaysMap("2022-05-18",2)
     *  return k(第几周),v(日期集合)
     *      1,["2022-05-12","2022-05-13","2022-05-14","2022-05-15","2022-05-16","2022-05-17","2022-05-18"]
     *      2,["2022-05-19","2022-05-20","2022-05-21","2022-05-22","2022-05-23","2022-05-24","2022-05-25"]
     * @return
     */
    public static Map<Integer, List<String>> getWeekAndDaysMap(String dateStr,int weekCount) {

        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate inputDate = LocalDate.parse(dateStr, dtf);

        int week = inputDate.getDayOfWeek().getValue();
        LocalDate startDay = null;
        // 获取时间段开始日期
        if (week < 4) {
            // 获取上周四
            startDay = inputDate.with(TemporalAdjusters.previous(DayOfWeek.SUNDAY)).minusDays(3);
        }else {
            // 获取本周四
            startDay = inputDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)).minusDays(3);
        }

        Map<Integer,List<String>> weekAndDayMap = new HashMap<>();

        LocalDate firstDay = startDay;
        for(int i = 1; i <= weekCount; i++) {
            List<String> days = new ArrayList<>();
            for (int j = 0; j < 7; j++){
                String format = firstDay.plusDays(j).format(dtf);
                days.add(format);
                if (j == 6){
                    firstDay = firstDay.plusDays(j+1);
                }
            }
            weekAndDayMap.put(i,days);
        }
        
        return weekAndDayMap;
    }
}

Guess you like

Origin blog.csdn.net/qq_21875331/article/details/124839760
Recommended