Date工具类

作者: 任未然 | 来源:发表于2020-05-31 16:22 被阅读0次

记录日常开发总结的日期工具类

字符串转日期

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Date utils
 *
 * @author Jiaju Zhuang
 **/
public class DateUtils {
    public static final String DATE_FORMAT_10 = "yyyy-MM-dd";
    public static final String DATE_FORMAT_14 = "yyyyMMddHHmmss";
    public static final String DATE_FORMAT_17 = "yyyyMMdd HH:mm:ss";
    public static final String DATE_FORMAT_19 = "yyyy-MM-dd HH:mm:ss";
    public static final String DATE_FORMAT_19_FORWARD_SLASH = "yyyy/MM/dd HH:mm:ss";
    private static final String MINUS = "-";

    private DateUtils() {}

    /**
     * convert string to date
     *
     * @param dateString
     * @param dateFormat
     * @return
     * @throws ParseException
     */
    public static Date parseDate(String dateString, String dateFormat) throws ParseException {
        if (StringUtils.isEmpty(dateFormat)) {
            dateFormat = switchDateFormat(dateString);
        }
        return new SimpleDateFormat(dateFormat).parse(dateString);
    }

    /**
     * convert string to date
     *
     * @param dateString
     * @return
     * @throws ParseException
     */
    public static Date parseDate(String dateString) throws ParseException {
        return parseDate(dateString, switchDateFormat(dateString));
    }

    /**
     * switch date format
     *
     * @param dateString
     * @return
     */
    private static String switchDateFormat(String dateString) {
        int length = dateString.length();
        switch (length) {
            case 19:
                if (dateString.contains(MINUS)) {
                    return DATE_FORMAT_19;
                } else {
                    return DATE_FORMAT_19_FORWARD_SLASH;
                }
            case 17:
                return DATE_FORMAT_17;
            case 14:
                return DATE_FORMAT_14;
            case 10:
                return DATE_FORMAT_10;
            default:
                throw new IllegalArgumentException("can not find date format for:" + dateString);
        }
    }

    /**
     * Format date
     * <p>
     * yyyy-MM-dd HH:mm:ss
     *
     * @param date
     * @return
     */
    public static String format(Date date) {
        return format(date, null);
    }

    /**
     * Format date
     *
     * @param date
     * @param dateFormat
     * @return
     */
    public static String format(Date date, String dateFormat) {
        if (date == null) {
            return "";
        }
        if (StringUtils.isEmpty(dateFormat)) {
            dateFormat = DATE_FORMAT_19;
        }
        return new SimpleDateFormat(dateFormat).format(date);
    }
}

获取指定时间范围列表

    /**
     * 获取时间方位列表
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param format    时间格式
     * @return
     */
    public static List<String> getMonthBetween(LocalDate startDate,LocalDate endDate,String format){
        if (StringUtil.isEmpty(startDate) || StringUtil.isEmpty(endDate)){
            return null;
        }
        // 日期格式类
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format);
        Assert.isTrue(startDate.compareTo(endDate) <= 0 ,"startDate必须小于等于endDate");
        ArrayList<String> monthBetween= new ArrayList<>();
        do {
            monthBetween.add(startDate.format(dateTimeFormatter));
            startDate = startDate.plusMonths(1);
        }while (startDate.compareTo(endDate) <= 0);
        return monthBetween;
    }

    /**
     * 获取当前月份的所有天的列表
     * @param localDate  指定月份任何一天的时间
     * @param format     返回日期格式
     * @return
     */
    public static List<String> getDayBetween(LocalDate localDate,String format){
        LocalDate firstDay, lastDay;
        firstDay = localDate.withDayOfMonth(1);
        System.out.println(firstDay);
        lastDay = firstDay.plusMonths(1).plusDays(-1);
        System.out.println(lastDay);
        // 日期格式类
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format);
        ArrayList<String> dayBetween= new ArrayList<>();
        do {
            dayBetween.add(firstDay.format(dateTimeFormatter));
            firstDay = firstDay.plusDays(1);
        }while (firstDay.compareTo(lastDay) <= 0);
        return dayBetween;
    }

相关文章

网友评论

    本文标题:Date工具类

    本文链接:https://www.haomeiwen.com/subject/zqcrzhtx.html