手动封装一个日期处理工具类,几乎覆盖了所有的时间操作(收藏)

工具类包含以下方法:

  • - stringToDate: 将字符串转换为java.util.Date类型
  • - dateToString: 将java.util.Date类型转换为字符串
  • - stringToLocalDateTime: 将字符串转换为LocalDateTime类型
  • - localDateTimeToString: 将LocalDateTime类型转换为字符串
  • - dateToLocalDateTime: 将java.util.Date类型转换为LocalDateTime类型
  • - localDateTimeToDate: 将LocalDateTime类型转换为java.util.Date类型
  • - addDate: 在java.util.Date类型日期上增加或减少指定时间
  • - addLocalDateTime: 在LocalDateTime类型日期上增加或减少指定时间

废话就不说了,直接上代码,建议收藏,实用的话帮忙点个赞!

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class DateUtil {

    /**
     * 将字符串转换为java.util.Date类型
     *
     * @param strDate 日期字符串
     * @param format  日期格式
     * @return java.util.Date类型日期
     * @throws ParseException 解析异常
     */
    public static Date stringToDate(String strDate, String format) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.parse(strDate);
    }

    /**
     * 将java.util.Date类型转换为字符串
     *
     * @param date   java.util.Date类型日期
     * @param format 日期格式
     * @return 日期字符串
     */
    public static String dateToString(Date date, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }

    /**
     * 将字符串转换为LocalDateTime类型
     *
     * @param strDate 日期字符串
     * @param format  日期格式
     * @return LocalDateTime类型日期
     */
    public static LocalDateTime stringToLocalDateTime(String strDate, String format) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return LocalDateTime.parse(strDate, formatter);
    }

    /**
     * 将LocalDateTime类型转换为字符串
     *
     * @param localDateTime LocalDateTime类型日期
     * @param format        日期格式
     * @return 日期字符串
     */
    public static String localDateTimeToString(LocalDateTime localDateTime, String format) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return localDateTime.format(formatter);
    }

    /**
     * 将java.util.Date类型转换为LocalDateTime类型
     *
     * @param date java.util.Date类型日期
     * @return LocalDateTime类型日期
     */
    public static LocalDateTime dateToLocalDateTime(Date date) {
        return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
    }

    /**
     * 将LocalDateTime类型转换为java.util.Date类型
     *
     * @param localDateTime LocalDateTime类型日期
     * @return java.util.Date类型日期
     */
    public static Date localDateTimeToDate(LocalDateTime localDateTime) {
        return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
    }

    /**
     * 在java.util.Date类型日期上增加或减少指定时间
     *
     * @param date   java.util.Date类型日期
     * @param field  时间类型,如Calendar.MINUTE,Calendar.HOUR,Calendar.DATE等
     * @param amount 增加或减少的时间数值
     * @return 增加或减少后的java.util.Date类型日期
     */
    public static Date addDate(Date date, int field, int amount) {
        java.util.Calendar cal = java.util.Calendar.getInstance();
        cal.setTime(date);
        cal.add(field, amount);
        return cal.getTime();
    }

    /**
     * 在LocalDateTime类型日期上增加或减少指定时间
     *
     * @param localDateTime LocalDateTime类型日期
     * @param field         时间类型,如ChronoUnit.MINUTES,ChronoUnit.HOURS,ChronoUnit.DAYS等
     * @param amount        增加或减少
 * @return 增加或减少后的LocalDateTime类型日期
 */
public static LocalDateTime addLocalDateTime(LocalDateTime localDateTime, int field, int amount) {
    switch (field) {
        case java.time.temporal.ChronoUnit.SECONDS:
            return localDateTime.plusSeconds(amount);
        case java.time.temporal.ChronoUnit.MINUTES:
            return localDateTime.plusMinutes(amount);
        case java.time.temporal.ChronoUnit.HOURS:
            return localDateTime.plusHours(amount);
        case java.time.temporal.ChronoUnit.DAYS:
            return localDateTime.plusDays(amount);
        case java.time.temporal.ChronoUnit.WEEKS:
            return localDateTime.plusWeeks(amount);
        case java.time.temporal.ChronoUnit.MONTHS:
            return localDateTime.plusMonths(amount);
        case java.time.temporal.ChronoUnit.YEARS:
            return localDateTime.plusYears(amount);
        default:
            throw new IllegalArgumentException("无效时间类型");
    }
}
}

以下是使用该工具类的示例代码:

import java.util.Date;
import java.time.LocalDateTime;

public class TestDateTimeUtils {
    public static void main(String[] args) {
        // 将字符串转换为Date类型
        Date date = DateTimeUtils.stringToDate("2023-04-27 14:23:30", "yyyy-MM-dd HH:mm:ss");
        System.out.println(date);
        
        // 将Date类型转换为字符串
        String dateString = DateTimeUtils.dateToString(date, "yyyy-MM-dd HH:mm:ss");
        System.out.println(dateString);
        
        // 将字符串转换为LocalDateTime类型
        LocalDateTime localDateTime = DateTimeUtils.stringToLocalDateTime("2023-04-27 14:23:30", "yyyy-MM-dd HH:mm:ss");
        System.out.println(localDateTime);
        
        // 将LocalDateTime类型转换为字符串
        String localDateTimeString = DateTimeUtils.localDateTimeToString(localDateTime, "yyyy-MM-dd HH:mm:ss");
        System.out.println(localDateTimeString);
        
        // 将Date类型转换为LocalDateTime类型
        LocalDateTime localDateTime2 = DateTimeUtils.dateToLocalDateTime(date);
        System.out.println(localDateTime2);
        
        // 将LocalDateTime类型转换为Date类型
        Date date2 = DateTimeUtils.localDateTimeToDate(localDateTime2);
        System.out.println(date2);
        
        // 在Date类型日期上增加或减少指定时间
        Date date3 = DateTimeUtils.addDate(date, java.util.Calendar.DATE, 1);
        System.out.println(date3);
        
        // 在LocalDateTime类型日期上增加或减少指定时间
        LocalDateTime localDateTime3 = DateTimeUtils.addLocalDateTime(localDateTime, java.time.temporal.ChronoUnit.DAYS, 1);
        System.out.println(localDateTime3);
    }
}

由于当前日期是2023-04-27,因此以下是上面示例代码的输出结果:

猜你喜欢

转载自blog.csdn.net/Dark_orange/article/details/130493072