日期格式转换的一个工具类

public class DateConvertUtils {

    private static final String datePattern = "yyyy-MM-dd";

    private static final String yearMonthPattern = "yyyy-MM";

    private static final String dateTimePattern = "yyyy-MM-dd HH:mm:ss";

    private static final String monthDayPattern = "MM月dd日";


    public static String date2Str(Date date) {
        return new SimpleDateFormat(datePattern).format(date);
    }


    public static String date2DateTimeStr(Date date) {
        if (ObjectUtils.isEmpty(date)) {
            return "";
        }
        return new SimpleDateFormat(dateTimePattern).format(date);
    }

    /**
     * 日期字符串转换为 X月-X日 格式
     *
     * @param dateStr 【yyyy-MM-dd】
     * @return
     */
    public static String dateStr2MonthDayStr(String dateStr) {
        Date date = str2Date(dateStr);
        if (ObjectUtils.isEmpty(date)) {
            return "";
        }
        return new SimpleDateFormat(monthDayPattern).format(date);
    }

    public static String date2MonthDayStr(Date date) {
        if (ObjectUtils.isEmpty(date)) {
            return "";
        }
        return new SimpleDateFormat(monthDayPattern).format(date);
    }

    public static Date str2Date(String dateStr) {
        try {
            return new SimpleDateFormat(datePattern).parse(dateStr);
        } catch (ParseException e) {
            return new Date();
        }
    }

    public static Date str2DateTime(String dateStr) {
        try {
            return new SimpleDateFormat(dateTimePattern).parse(dateStr);
        } catch (ParseException e) {
            return new Date();
        }
    }

    public static String localDate2Str(LocalDate localDate) {
        return localDate.toString();
    }

    public static String yearMonthStrFormatter(String dateStr) {
        return new SimpleDateFormat(yearMonthPattern).format(str2Date(dateStr));
    }

    public static String yearMonthStrToday() {
        return new SimpleDateFormat(yearMonthPattern).format(today());
    }

    public static String date2YearMonthStr(Date date) {
        return new SimpleDateFormat(yearMonthPattern).format(date);
    }

    public static String yearMonthStrLastMonth() {
        LocalDate localDate = LocalDate.now().minusMonths(1);
        ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
        Date date = Date.from(zonedDateTime.toInstant());
        return new SimpleDateFormat(yearMonthPattern).format(date);
    }

    public static String getLast3MonthYearMonthStr() {
        LocalDate date = LocalDate.now();
        date = date.minusMonths(3);
        return yearMonthStrFormatter(localDate2Str(date));
    }

    public static String getLast3MonthDateStrStart() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MONTH, -3);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        Date time = cal.getTime();
        return new SimpleDateFormat("yyyy-MM-dd").format(time);
    }

    public static String getLast3MonthDateStrEnd() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MONTH, -3);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        Date time = cal.getTime();
        return new SimpleDateFormat("yyyy-MM-dd").format(time);
    }

    public static Date today() {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat(datePattern);
        try {
            return sdf.parse(sdf.format(date));
        } catch (ParseException e) {
            return date;
        }
    }

    public static String localDateTime2Str(LocalDateTime localDateTime) {
        DateTimeFormatter df = DateTimeFormatter.ofPattern(dateTimePattern);
        return df.format(localDateTime);
    }

    public static String localDateTime2DateStr(LocalDateTime localDateTime) {
        DateTimeFormatter df = DateTimeFormatter.ofPattern(datePattern);
        return df.format(localDateTime);
    }

    public static String getWeekStart() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.WEEK_OF_MONTH, 0);
        cal.set(Calendar.DAY_OF_WEEK, 2);
        Date time = cal.getTime();
        return new SimpleDateFormat("yyyy-MM-dd").format(time);
    }

    public static String getWeekEnd() {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.DAY_OF_WEEK, cal.getActualMaximum(Calendar.DAY_OF_WEEK));
        cal.add(Calendar.DAY_OF_WEEK, 1);
        Date time = cal.getTime();
        time = DateUtils.addDays(time, 1);
        return new SimpleDateFormat("yyyy-MM-dd").format(time);
    }

    public static String getMonthStart() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MONTH, 0);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        Date time = cal.getTime();
        return new SimpleDateFormat("yyyy-MM-dd").format(time);
    }


    public static String getMonthEnd() {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        Date time = cal.getTime();
        return new SimpleDateFormat("yyyy-MM-dd").format(time);
    }

    public static String getLastMonthStart() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MONTH, -1);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        Date time = cal.getTime();
        return new SimpleDateFormat("yyyy-MM-dd").format(time);
    }


    public static String getLastMonthEnd() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MONTH, -1);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
        Date time = cal.getTime();
        return new SimpleDateFormat("yyyy-MM-dd").format(time);
    }

    public static YearMonth str2YearMonth(String str) {
        DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDate localDate = LocalDate.parse(str, fmt);
        return YearMonth.of(localDate.getYear(), localDate.getMonthValue());
    }

    public static YearMonth getYearMonth(String searchDate) {
        YearMonth yearMonth = YearMonth.now();
        if (searchDate.equals("DAY") || searchDate.equals("TODAY")) {
            yearMonth = YearMonth.now();
        } else if (searchDate.equals("MONTH")) {
            yearMonth = YearMonth.now();
        } else if (searchDate.equals("LAST_MONTH")) {
            yearMonth = YearMonth.now().plusMonths(-1);
        }
        return yearMonth;
    }

    public static String getDateStrBySearchDate(String searchDate) {
        String billMonth = "";
        if (searchDate.equals("DAY") || searchDate.equals("TODAY")) {
            billMonth = DateConvertUtils.date2Str(new Date());
        } else if (searchDate.equals("MONTH")) {
            billMonth = DateConvertUtils.yearMonthStrToday();
        } else if (searchDate.equals("LAST_MONTH")) {
            billMonth = DateConvertUtils.yearMonthStrLastMonth();
        }
        return billMonth;
    }

    public static List<YearMonth> getWeekYearMonths() {
        List<YearMonth> yearMonths = new ArrayList<>();
        YearMonth startMonth = DateConvertUtils.str2YearMonth(DateConvertUtils.getWeekStart());
        YearMonth endMonth = DateConvertUtils.str2YearMonth(DateConvertUtils.getWeekEnd());
        if (startMonth.format(DateTimeFormatter.ofPattern("yyyy-MM")).equals(endMonth.format(DateTimeFormatter.ofPattern("yyyy-MM")))) {
            yearMonths.add(startMonth);
        } else {
            yearMonths.add(startMonth);
            yearMonths.add(endMonth);
        }
        return yearMonths;
    }

    public static LocalDateTime str2LocalDateTime(String str) {
        str += " 00:00:00";
        DateTimeFormatter df = DateTimeFormatter.ofPattern(dateTimePattern);
        return LocalDateTime.parse(str, df);
    }

    public static LocalDateTime getLeftLocalDateTime(String searchDate) {
        LocalDateTime left = LocalDateTime.now();
        if (searchDate.equals("DAY") || searchDate.equals("TODAY")) {
            left = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
        } else if (searchDate.equals("WEEK")) {
            left = DateConvertUtils.str2LocalDateTime(DateConvertUtils.getWeekStart());
        } else if (searchDate.equals("MONTH")) {
            left = DateConvertUtils.str2LocalDateTime(DateConvertUtils.getMonthStart());
        } else if (searchDate.equals("LAST_MONTH")) {
            left = DateConvertUtils.str2LocalDateTime(DateConvertUtils.getLastMonthStart());
        }
        return left;
    }

    public static LocalDateTime getRightLocalDateTime(String searchDate) {
        LocalDateTime right = LocalDateTime.now();
        if (searchDate.equals("DAY") || searchDate.equals("TODAY")) {
            right = LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MIN);
        } else if (searchDate.equals("WEEK")) {
            right = DateConvertUtils.str2LocalDateTime(DateConvertUtils.getWeekEnd());
        } else if (searchDate.equals("MONTH")) {
            right = DateConvertUtils.str2LocalDateTime(DateConvertUtils.getMonthEnd());
        } else if (searchDate.equals("LAST_MONTH")) {
            right = DateConvertUtils.str2LocalDateTime(DateConvertUtils.getLastMonthEnd());
        }
        return right;
    }

    public static Date getBefore3HourDate() {
        Date date = new Date();//获取当前时间    
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.HOUR, -3);
        return calendar.getTime();
    }

    public static Date dateStartDate(Integer day) {
        Calendar todayStart = Calendar.getInstance();
        todayStart.add(Calendar.DATE, day);
        todayStart.set(Calendar.HOUR_OF_DAY, 0);
        todayStart.set(Calendar.MINUTE, 0);
        todayStart.set(Calendar.SECOND, 0);
        todayStart.set(Calendar.MILLISECOND, 0);
        return todayStart.getTime();
    }

    public static Date dateEndDate(Integer day) {
        Calendar todayEnd = Calendar.getInstance();
        todayEnd.add(Calendar.DATE, day - 1);
        todayEnd.set(Calendar.HOUR, 23);
        todayEnd.set(Calendar.MINUTE, 59);
        todayEnd.set(Calendar.SECOND, 59);
        todayEnd.set(Calendar.MILLISECOND, 999);
        return todayEnd.getTime();
    }

    /**
     * parse yyyy-MM-dd to LocalDateTime
     *
     * @param date empty able
     * @return {@code null} if {@param date} is empty.
     */
    public static LocalDateTime separatedByDash_yyyyMMdd(String date) {
        if (StringUtils.isEmpty(date)) {
            return null;
        }
        return LocalDateTime.of(LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyy-MM-dd")), LocalTime.MIN);
    }

    public static LocalDateTime separatedByDash_yyyyMMddWithMaxTime(String date) {
        if (StringUtils.isEmpty(date)) {
            return null;
        }
        return LocalDateTime.of(LocalDate.parse(date, DateTimeFormatter.ofPattern("yyyy-MM-dd")), LocalTime.MAX);
    }

有时间再整理优化一下,先记录下来

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。