Manually encapsulate a date processing tool class, covering almost all time operations (collection)

The utility class contains the following methods:

  • - stringToDate : Convert a string to java.util.Date type
  • - dateToString : Convert the java.util.Date type to a string
  • - stringToLocalDateTime : convert string to LocalDateTime type
  • - localDateTimeToString : convert LocalDateTime type to string
  • - dateToLocalDateTime : Convert java.util.Date type to LocalDateTime type
  • - localDateTimeToDate : Convert LocalDateTime type to java.util.Date type
  • - addDate : Add or subtract the specified time on the java.util.Date type date
  • - addLocalDateTime : Add or subtract the specified time on the LocalDateTime type date

Don't talk nonsense, just upload the code directly, it is recommended to bookmark, if it is practical, please give me a thumbs up!

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("无效时间类型");
    }
}
}

The following is the sample code using this utility class:

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);
    }
}

Since the current date is 2023-04-27, the following is the output of the sample code above:

 

Guess you like

Origin blog.csdn.net/Dark_orange/article/details/130493072