基于DateTimeFormatter的日期工具类

工具类:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.Calendar;
import java.util.Date;
import java.util.Objects;

/**
 * 基于DateTimeFormatter的日期工具类
 * @author zql
 * @createTime 2020-11-29 22:21:46
 * @version 1.1
 * @modifyLog 1.1 优化代码
 *
 */
public class DateUtil {
	
	/**
	 * 屏蔽构造函数,避免被实例化
	 */
	private DateUtil() {}
	/**
	 * 年,格式:yyyy
	 */
	private final static DateTimeFormatter YEAR = DateTimeFormatter.ofPattern("yyyy");
	/**
	 * 月,格式:MM
	 */
	private final static DateTimeFormatter MONTH = DateTimeFormatter.ofPattern("MM");
	/**
	 * 日,格式:dd
	 */
	private final static DateTimeFormatter DAY = DateTimeFormatter.ofPattern("dd");
	/**
	 * 小时,格式:HH
	 */
	private final static DateTimeFormatter HOUR = DateTimeFormatter.ofPattern("HH");
	/**
	 * 分钟,格式:mm
	 */
	private final static DateTimeFormatter MINUTE = DateTimeFormatter.ofPattern("mm");
	/**
	 * 秒钟,格式:ss
	 */
	private final static DateTimeFormatter SECOND = DateTimeFormatter.ofPattern("ss");
	/**
	 * 年月日,格式:yyyy-MM-dd
	 */
	private final static DateTimeFormatter YEAR_MONTH_DAY = DateTimeFormatter.ofPattern("yyyy-MM-dd");
	/**
	 * 年月日,格式:yyyyMMdd
	 */
	private final static DateTimeFormatter YEAR_MONTH_DAY2 = DateTimeFormatter.ofPattern("yyyyMMdd");
	/**
	 * 年月日时分秒,格式:yyyy-MM-dd HH:mm:ss
	 */
	private final static DateTimeFormatter DATE = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

	/**
	 * 获取系统当前年份,YYYY格式
	 * 
	 * @return
	 */
	public static String getYear() {
		return LocalDate.now().format(DateUtil.YEAR);
	}

	/**
	 * 获取系统当前月份,MM格式
	 * 
	 * @return
	 */
	public static String getMonth() {
		return LocalDate.now().format(DateUtil.MONTH);
	}
	
	/**
	 * 获取系统当前日期,dd格式
	 * 
	 * @return
	 */
	public static String getDay() {
		return LocalDate.now().format(DateUtil.DAY);
	}
	
	/**
	 * 获取系统当前小时,HH格式
	 * 
	 * @return
	 */
	public static String getHour() {
		return LocalDateTime.now().format(DateUtil.HOUR);
	}
	
	/**
	 * 获取系统当前分钟,mm格式
	 * 
	 * @return
	 */
	public static String getMinute() {
		return LocalDateTime.now().format(DateUtil.MINUTE);
	}
	
	/**
	 * 获取系统当前秒钟,ss格式
	 * 
	 * @return
	 */
	public static String getSecond() {
		return LocalDateTime.now().format(DateUtil.SECOND);
	}
	
	/**
	 * 获取系统当前年月日,YYYY-MM-DD格式
	 * 
	 * @return
	 */
	public static String getYearMonthDay() {
		return LocalDate.now().format(DateUtil.YEAR_MONTH_DAY);
	}
	
	/**
	 * 获取系统当前年月日,YYYYMMDD格式
	 * 
	 * @return
	 */
	public static String getYearMonthDay2() {
		return LocalDate.now().format(DateUtil.YEAR_MONTH_DAY2);
	}
	
	/**
	 * 获取系统当前日期时间,YYYY-MM-DD HH:mm:ss格式
	 * 
	 * @return
	 */
	public static String getDate() {
		return LocalDateTime.now().format(DateUtil.DATE);
	}
	
	/**
	 * 根据传入的int数字获取系统当前时间
	 * <pre>
	 * 11 格式:yyyy-MM
	 * 12 格式:MM-dd
	 * 13 格式:yyyy-MM-dd
	 * 14 格式:yyyy-MM-dd HH:mm
	 * 15 格式:yyyy-MM-dd HH:mm:ss
	 * 21 格式:yyyyMM
	 * 22 格式:MMdd
	 * 23 格式:yyyyMMdd
	 * 24 格式:yyyyMMddHHmm
	 * 25 格式:yyyyMMddHHmmss
	 * 31 格式:yyyy/MM
	 * 32 格式:MM/dd
	 * 33 格式:yyyy/MM/dd
	 * 34 格式:yyyy/MM/dd HH:mm
	 * 35 格式:yyyy/MM/dd HH:mm:ss
	 * 41 格式:yyyy年MM月
	 * 42 格式:MM月dd日
	 * 43 格式:yyyy年MM月dd日
	 * 44 格式:yyyy年MM月dd日 HH时mm分
	 * 45 格式:yyyy年MM月dd日 HH时mm分ss秒
	 * 51 格式:HH:mm
	 * 52 格式:HH:mm:ss
	 * 53 格式:HH时mm分
	 * 54 格式:HH时mm分ss秒
	 * 默认格式yyyy-MM-dd
	 * </pre>
	 * @author zql
	 * @createTime 2020-11-29 22:22:10
	 *
	 * @param format 格式类型
	 * @return 自定义的日期格式,共有24种
	 */
	public static String getDateString(int format) {
		return DateUtil.getDefinedFormat(DateUtil.getYear(), DateUtil.getMonth(), DateUtil.getDay(), DateUtil.getHour(), DateUtil.getMinute(), DateUtil.getSecond(), format);
	}
	
	/**
	 * 时间戳转换为日期格式,根据传入的int数字获取确定要转换成的格式
	 * <pre>
	 * 11 格式:yyyy-MM
	 * 12 格式:MM-dd
	 * 13 格式:yyyy-MM-dd
	 * 14 格式:yyyy-MM-dd HH:mm
	 * 15 格式:yyyy-MM-dd HH:mm:ss
	 * 21 格式:yyyyMM
	 * 22 格式:MMdd
	 * 23 格式:yyyyMMdd
	 * 24 格式:yyyyMMddHHmm
	 * 25 格式:yyyyMMddHHmmss
	 * 31 格式:yyyy/MM
	 * 32 格式:MM/dd
	 * 33 格式:yyyy/MM/dd
	 * 34 格式:yyyy/MM/dd HH:mm
	 * 35 格式:yyyy/MM/dd HH:mm:ss
	 * 41 格式:yyyy年MM月
	 * 42 格式:MM月dd日
	 * 43 格式:yyyy年MM月dd日
	 * 44 格式:yyyy年MM月dd日 HH时mm分
	 * 45 格式:yyyy年MM月dd日 HH时mm分ss秒
	 * 51 格式:HH:mm
	 * 52 格式:HH:mm:ss
	 * 53 格式:HH时mm分
	 * 54 格式:HH时mm分ss秒
	 * 默认格式yyyy-MM-dd
	 * </pre>
	 * @author zql
	 * @createTime 2020-11-29 22:24:04
	 *
	 * @param times 时间戳
	 * @param format 格式类型
	 * @return
	 */
	public static String getDateString(String times, int format) {
		// 只计算到秒
		times = times.length() > 10 ? times.substring(0, 10) : times;
		long timeStamp = new Long(times);
		LocalDateTime dateTime = LocalDateTime.ofEpochSecond(timeStamp, 0, ZoneOffset.ofHours(8));
        String year = dateTime.format(DateUtil.YEAR);
		String month = dateTime.format(DateUtil.MONTH);
		String day = dateTime.format(DateUtil.DAY);
		String hour = dateTime.format(DateUtil.HOUR);
		String minute = dateTime.format(DateUtil.MINUTE);
		String second = dateTime.format(DateUtil.SECOND);
		return DateUtil.getDefinedFormat(year, month, day, hour, minute, second, format); 
	}
	
	/**
	 * 把日期类型转换成字符串形式,根据传入的int数字获取确定要转换成的格式
	 * <pre>
	 * 11 格式:yyyy-MM
	 * 12 格式:MM-dd
	 * 13 格式:yyyy-MM-dd
	 * 14 格式:yyyy-MM-dd HH:mm
	 * 15 格式:yyyy-MM-dd HH:mm:ss
	 * 21 格式:yyyyMM
	 * 22 格式:MMdd
	 * 23 格式:yyyyMMdd
	 * 24 格式:yyyyMMddHHmm
	 * 25 格式:yyyyMMddHHmmss
	 * 31 格式:yyyy/MM
	 * 32 格式:MM/dd
	 * 33 格式:yyyy/MM/dd
	 * 34 格式:yyyy/MM/dd HH:mm
	 * 35 格式:yyyy/MM/dd HH:mm:ss
	 * 41 格式:yyyy年MM月
	 * 42 格式:MM月dd日
	 * 43 格式:yyyy年MM月dd日
	 * 44 格式:yyyy年MM月dd日 HH时mm分
	 * 45 格式:yyyy年MM月dd日 HH时mm分ss秒
	 * 51 格式:HH:mm
	 * 52 格式:HH:mm:ss
	 * 53 格式:HH时mm分
	 * 54 格式:HH时mm分ss秒
	 * 默认格式yyyy-MM-dd
	 * </pre>
	 * @author zql
	 * @createTime 2020-11-29 22:32:11
	 *
	 * @param date Date类型的日期
	 * @param format 格式类型
	 * @return 自定义的日期格式,共有24种
	 */
	public static String getDateString(Date date, int format) {
		return DateUtil.getDateString(date.getTime() + "", format); 
	}
	
    /**
     * 将java.util.Date 转换为java8 的java.time.LocalDateTime,默认时区为东8区
     * @author zql
     * @createTime 2020-11-29 22:46:44
     *
     * @param date
     * @return
     */
    public static LocalDateTime dateToLocalDateTime(Date date) {
        return date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
    }
 
    /**
     * 将java8 的 java.time.LocalDateTime 转换为 java.util.Date,默认时区为东8区
     * @author zql
     * @createTime 2020-11-29 22:46:36
     *
     * @param localDateTime
     * @return
     */
    public static Date localDateTimeToDate(LocalDateTime localDateTime) {
        return Date.from(localDateTime.toInstant(ZoneOffset.of("+8")));
    }
    
    /**
     * 将java8 的 java.time.LocalDate 转换为 java.util.Date
     * @author zql
     * @createTime 2020-11-29 22:46:27
     *
     * @param localDate
     * @return
     */
    public static Date localDateToDate(LocalDate localDate) {
    	ZoneId zone = ZoneId.systemDefault();
    	Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
        return Date.from(instant);
    }
    
    /**
     * 字符串格式化转Date
	 * <pre>
	 * 支持格式
	 * yyyy-MM-dd
	 * yyyy-MM-dd HH:mm:ss
	 * </pre>
     * @author zql
     * @createTime 2020-11-29 22:46:11
     *
     * @param date 
     * @return
     */
    public static Date stringFormatToDate(String date) {
    	int length = 10;
    	if (date.length() <= length) {
    		LocalDate ldt = LocalDate.parse(date, DateUtil.YEAR_MONTH_DAY);
    		return DateUtil.localDateToDate(ldt);
    	} else {
    		LocalDateTime ldt = LocalDateTime.parse(date, DateUtil.DATE);
    		return DateUtil.localDateTimeToDate(ldt);
    	}
    }
	
	/**
	 * 获取DateTimeFormatter的日期
	 * @author zql
	 * @createTime 2020-11-29 22:45:54
	 *
	 * @param date 传入的日期
	 * @param format 自定义格式,例:yyyy-MM-dd
	 * @return
	 */
	public static String getDateTimeFormatter(Date date,String format) {
		DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern(format);
		LocalDateTime ldt = DateUtil.dateToLocalDateTime(date);
		return ldt.format(dateFormat);
	}
	
	/**
	 * 日期比较
	 * @author zql
	 * @createTime 2020-11-29 22:45:31
	 *
	 * @param startDate 开始日期,格式yyyy-MM-dd
	 * @param endDate 结束日期,格式yyyy-MM-dd
	 * @return 如果startDate>endDate,返回1,startDate=endDate返回0,startDate<endDate返回-1
	 */
	public static Integer compareDate(String startDate, String endDate) {
		if (Objects.isNull(startDate) || Objects.isNull(endDate)) {
			return null;
		}
		if (DateUtil.getSecond(startDate) > DateUtil.getSecond(endDate)) {
			return 1;
		}
		if (DateUtil.getSecond(startDate) < DateUtil.getSecond(endDate)) {
			return -1;
		}
		return 0;
	}

	/**
	 * 校验日期是否合法,校验格式:yyyy-MM-dd
	 * @author zql
	 * @createTime 2020-11-29 22:45:18
	 *
	 * @param date 日期字符串
	 * @return
	 */
	public static boolean isValidDate(String date) {
		try {
			DateUtil.YEAR_MONTH_DAY.parse(date);
			return true;
		} catch (DateTimeParseException e) {
			// 如果throw,就说明格式不对
			return false;
		}
	}
	
	/**
	 * 校验日期是否合法,
	 * @author zql
	 * @createTime 2020-11-29 22:45:00
	 *
	 * @param date 日期字符串
	 * @param formatter 校验格式,例:yyyy-MM-dd
	 * @return
	 */
	public static boolean isValidDateFormat(String date, String formatter) {
		DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern(formatter);
	    try {
	    	dateFormat.parse(date);
	        return true;
	    } catch (DateTimeParseException e) {
	    	// 如果throw,就说明格式不对
	        return false;
	    }
	}
	
	/**
	 * 格式为yyyy-MM-dd的时间字符串转为秒,默认时区为东8区
	 * @author zql
	 * @createTime 2020-11-29 22:44:50
	 *
	 * @param dateStr
	 * @return
	 */
	public static long getSecond(String dateStr) {
		return LocalDateTime.parse(dateStr + " 00:00:00", DateUtil.DATE).toEpochSecond(ZoneOffset.of("+8"));
	}
	
	/**
	 * 时间相减得到年份,不够365天算0年
	 * @author zql
	 * @createTime 2020-11-29 22:44:28
	 *
	 * @param startDate 开始日期,格式yyyy-MM-dd
	 * @param endDate 结束日期,格式yyyy-MM-dd
	 * @return 返回相隔的年数,null表示格式不正确出现异常
	 */
	public static Integer getDiffYear(String startDate, String endDate) {
		try {
			int years = (int) (((DateUtil.getSecond(startDate) - DateUtil.getSecond(endDate)) / (60 * 60 * 24)) / 365);
			return years;
		} catch (Exception e) {
			return null;
		}
	}
	
    /**
     * 时间相减得到天数
     * @author zql
     * @createTime 2020-11-29 22:44:09
     *
     * @param startDate 开始日期,格式yyyy-MM-dd
     * @param endDate 结束日期,格式yyyy-MM-dd
     * @return 返回相隔的天数,null表示格式不正确出现异常
     */
    public static Integer getDaySub(String startDate, String endDate) {
        try {
        	int days = (int) (DateUtil.getSecond(endDate) - DateUtil.getSecond(startDate)) / (24 * 60 * 60);
        	return days;
		} catch (Exception e) {
			return null;
		}
    }
    
    /**
     * 得到n天之后的日期
     * @author zql
     * @createTime 2020-11-29 22:44:01
     *
     * @param days
     * @return
     */
    public static String getAfterDayDate(int days) {
    	// java.util包
        Calendar canlendar = Calendar.getInstance();
        // 日期相减,如果不够减将会向月变动
        canlendar.add(Calendar.DATE, days); 
        Date date = canlendar.getTime();
        
        return DateUtil.getDateTimeFormatter(date, "yyyy-MM-dd HH:mm:ss");
    }
    
    /**
     * 得到n天之后是周几
     * @author zql
     * @createTime 2020-11-29 22:43:49
     *
     * @param days
     * @return
     */
    public static String getAfterDayWeek(int days) {
    	// java.util包
        Calendar canlendar = Calendar.getInstance();
        // 日期相减,如果不够减将会向月变动
        canlendar.add(Calendar.DATE, days); 
        Date date = canlendar.getTime();
        return DateUtil.getDateTimeFormatter(date, "E");
    }

    /**
     * 算出两个日期相差的月数
     * @author zql
     * @createTime 2020-11-29 22:43:33
     *
     * @param date1
     * @param date2
     * @return
     */
    public static float monthSpace(String date1, String date2) {
		Calendar c1 = Calendar.getInstance();
		Calendar c2 = Calendar.getInstance();

		c1.setTime(DateUtil.stringFormatToDate(date1));
		c2.setTime(DateUtil.stringFormatToDate(date2));
		return DateUtil.getSpaceResult(c1, c2);
    }
    
    /**
     * 算出两个日期相差的月数
     * <pre>线程不安全</pre>
     * @author zql
     * @createTime 2020-11-29 22:42:51
     *
     * @param date1
     * @param date2
     * @param format
     * @return
     * @throws ParseException 
     */
    @Deprecated
    public static float monthSpace(String date1, String date2, String format) throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		Calendar c1 = Calendar.getInstance();
		Calendar c2 = Calendar.getInstance();

		c1.setTime(sdf.parse(date1));
		c2.setTime(sdf.parse(date2));
		return DateUtil.getSpaceResult(c1, c2);
    }
    
    /**
     * 两个日期相差的月数计算
     * @author zql
     * @createTime 2020-11-29 22:42:11
     *
     * @param c1
     * @param c2
     * @return
     */
    private static float getSpaceResult(Calendar c1, Calendar c2) {
    	float year = 0;
		float result = 0;
    	year = c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR);
		result = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH);
		result = result + year * 12;
		float num = (float) (Math.round(result * 100) / 100);
		return Math.abs((float) (result == 0.0 ? 1.0 : num));
    }
    
    /**
     * 一个日期减去一个月数,得到具体时间
     * @author zql
     * @createTime 2020-11-29 22:41:45
     *
     * @param time 时间
     * @param n 要减去多少月 
     * @param format
     * @return
     */
    public static String reduceMonthSpace(String time, String n, String format) {
    	return DateUtil.getReduceMonthSpaceResult(DateUtil.stringFormatToDate(time), Integer.parseInt(n), format);
    }
    
    /**
     * 一个日期减去一个月数,得到具体时间
     * <pre>线程不安全</pre>
     * @author:zql
     * @createTime 2020-11-29 22:36:42
     *
     * @param time 时间
     * @param n 要减去多少月 
     * @param format
     * @return
     * @throws ParseException 
     */
    @Deprecated
    public static String reduceMonthSpace2(String time, String n, String format) throws ParseException {
    	SimpleDateFormat sdf = new SimpleDateFormat(format);
    	return DateUtil.getReduceMonthSpaceResult(sdf.parse(time), Integer.parseInt(n), format);
    }
    
    /**
     * 一个日期减去一个月数计算过程
     * @author zql
     * @createTime 2020-11-29 22:36:42
     *
     * @param date
     * @param amount
     * @param format
     * @return
     */
    private static String getReduceMonthSpaceResult(Date date, int amount, String format) {
    	Calendar calender = Calendar.getInstance();
    	calender.setTime(date);
    	calender.add(Calendar.MONTH, amount);
    	String result = DateUtil.getDateTimeFormatter(calender.getTime(), format);
    	return result;
    }
    
    /**
	 * 自定义日期字符串
	 * <pre>
	 * 11 格式:yyyy-MM
	 * 12 格式:MM-dd
	 * 13 格式:yyyy-MM-dd
	 * 14 格式:yyyy-MM-dd HH:mm
	 * 15 格式:yyyy-MM-dd HH:mm:ss
	 * 21 格式:yyyyMM
	 * 22 格式:MMdd
	 * 23 格式:yyyyMMdd
	 * 24 格式:yyyyMMddHHmm
	 * 25 格式:yyyyMMddHHmmss
	 * 31 格式:yyyy/MM
	 * 32 格式:MM/dd
	 * 33 格式:yyyy/MM/dd
	 * 34 格式:yyyy/MM/dd HH:mm
	 * 35 格式:yyyy/MM/dd HH:mm:ss
	 * 41 格式:yyyy年MM月
	 * 42 格式:MM月dd日
	 * 43 格式:yyyy年MM月dd日
	 * 44 格式:yyyy年MM月dd日 HH时mm分
	 * 45 格式:yyyy年MM月dd日 HH时mm分ss秒
	 * 51 格式:HH:mm
	 * 52 格式:HH:mm:ss
	 * 53 格式:HH时mm分
	 * 54 格式:HH时mm分ss秒
	 * 默认格式yyyy-MM-dd
	 * </pre>
	 * @author zql
	 * @createTime 2020-11-29 22:34:33
	 *
	 * @param year 年
	 * @param month 月
	 * @param day 日
	 * @param hour 时
	 * @param minute 分
	 * @param second 秒
	 * @param format 格式类型
	 * @return
	 */
	private static String getDefinedFormat(String year, String month, String day, String hour, String minute, String second, int format) {
		String dateStr = null;
		switch (format) {
		case 11:
			dateStr = year + "-" + month;
			break;
		case 12:
			dateStr = month + "-" +day;
			break;
		case 13:
			dateStr = year + "-" + month + "-" +day;
			break;
		case 14:
			dateStr = year + "-" + month + "-" +day + " " + hour +":"+minute;
			break;
		case 15:
			dateStr = year + "-" + month + "-" +day + " " + hour +":" + minute + ":" + second;
			break;
		case 21:
			dateStr = year + month;
			break;
		case 22:
			dateStr = month + day;
			break;
		case 23:
			dateStr = year + month + day;
			break;
		case 24:
			dateStr = year + month +day + hour + minute;
			break;
		case 25:
			dateStr = year + month + day + hour + minute + second;
			break;
		case 31:
			dateStr = year + "/" + month;
			break;
		case 32:
			dateStr = month + "/" +day;
			break;
		case 33:
			dateStr = year + "/" + month + "/" +day;
			break;
		case 34:
			dateStr = year + "/" + month + "/" +day + " " + hour +":"+minute;
			break;
		case 35:
			dateStr = year + "/" + month + "/" +day + " " + hour +":" + minute + ":" + second;
			break;
		case 41:
			dateStr = year + "年" + month + "月";
			break;
		case 42:
			dateStr = month + "月" +day + "日";
			break;
		case 43:
			dateStr = year + "年" + month + "月" +day + "日";
			break;
		case 44:
			dateStr = year + "年" + month + "月" +day + "日" +" "+ hour + "时" + minute +"分";
			break;
		case 45:
			dateStr = year + "年" + month + "月" +day + "日" +" "+ hour + "时" + minute + "分" +second+ "秒";
			break;
		case 51:
			dateStr = hour + ":" + minute;
			break;
		case 52:
			dateStr = hour + ":" + minute + ":" +second;
			break;
		case 53:
			dateStr = hour + "时" + minute + "分";
			break;
		case 54:
			dateStr = hour + "时" + minute + "分" +second + "秒";
			break;
		default:
			dateStr = year + "-" +month+ "-" + day;
		}
		return dateStr;
	}
}

测试类:

import java.text.ParseException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;

import org.junit.Test;

/**
 * 基于DateTimeFormatter的日期工具测试类
 *
 * @author zql
 * @createTime 2021-01-02 0:46
 * @version 1.0
 * @modifyLog
 */
public class DateUtilTest {

    @Test
    public void getYear() {
        System.out.println("年:" + DateUtil.getYear());
    }

    @Test
    public void getMonth() {
        System.out.println("月:" + DateUtil.getMonth());
    }

    @Test
    public void getDay() {
        System.out.println("日:" + DateUtil.getDay());
    }

    @Test
    public void getHour() {
        System.out.println("时:" + DateUtil.getHour());
    }

    @Test
    public void getMinute() {
        System.out.println("分:" + DateUtil.getMinute());
    }

    @Test
    public void getSecond() {
        System.out.println("秒:" + DateUtil.getSecond());
        System.out.println("秒:" + DateUtil.getSecond("2020-12-20"));
    }

    @Test
    public void getYearMonthDay() {
        System.out.println("年月日:" + DateUtil.getYearMonthDay());
    }

    @Test
    public void getYearMonthDay2() {
        System.out.println("年月日:" + DateUtil.getYearMonthDay2());
    }

    @Test
    public void getDate() {
        System.out.println("年月日时分秒:" + DateUtil.getDate());
    }

    @Test
    public void getDateString() {
        System.out.println(DateUtil.getDateString(45));

        String str = String.valueOf(System.currentTimeMillis());
        System.out.println(DateUtil.getDateString(str,35));

        System.out.println(DateUtil.getDateString(new Date(), 25));
    }

    @Test
    public void dateToLocalDateTime() {
        Date date = new Date(1577812341000L);
        LocalDateTime localDateTime = DateUtil.dateToLocalDateTime(date);
        System.out.println(localDateTime);
    }

    @Test
    public void localDateTimeToDate() {
        LocalDateTime localDateTime = LocalDateTime.now();
        Date date = DateUtil.localDateTimeToDate(localDateTime);
        System.out.println(date);
    }

    @Test
    public void localDateToDate() {
        LocalDate localDate = LocalDate.now();
        Date date = DateUtil.localDateToDate(localDate);
        System.out.println(date);
    }

    @Test
    public void stringFormatToDate() {
        String str1 = "2021-01-01";
        Date date1 = DateUtil.stringFormatToDate(str1);
        System.out.println(date1.toString());

        String str2 = "2020-01-01 01:01:01";
        Date date2 = DateUtil.stringFormatToDate(str2);
        System.out.println(date2);
    }

    @Test
    public void getDateTimeFormatter() {
        System.out.println(DateUtil.getDateTimeFormatter(new Date(),"yyyyMMdd"));
        System.out.println(DateUtil.getDateTimeFormatter(new Date(),"yyyy-MM-dd"));
        System.out.println(DateUtil.getDateTimeFormatter(new Date(),"yyyy-MM-dd HH:mm"));
        System.out.println(DateUtil.getDateTimeFormatter(new Date(),"yyyy-MM-dd HH:mm:ss"));
    }

    @Test
    public void compareDate() {
        System.out.println(DateUtil.compareDate("2019-11-19", "2019-04-19"));
        System.out.println(DateUtil.compareDate("2019-04-19", "2019-04-19"));
        System.out.println(DateUtil.compareDate("2019-04-19", "2019-11-19"));
    }

    @Test
    public void isValidDate() {
        System.out.println(DateUtil.isValidDate("2019-11-19"));
        System.out.println(DateUtil.isValidDate("2019-11>19"));
    }

    @Test
    public void isValidDateFormat() {
        System.out.println(DateUtil.isValidDateFormat("2019>11>19", "yyyy>mm>dd"));
    }

    @Test
    public void getDiffYear() {
        System.out.println(DateUtil.getDiffYear("2010-01-08","2019-01-02"));
        System.out.println("时间相减出错:" + DateUtil.getDiffYear("2019","2019-01-02"));
    }

    @Test
    public void getDaySub() {
        System.out.println(DateUtil.getDaySub("2020-12-20", "2020-12-30"));
    }

    @Test
    public void getAfterDayDate() {
        System.out.println(DateUtil.getAfterDayDate(7));
    }

    @Test
    public void getAfterDayWeek() {
        System.out.println(DateUtil.getAfterDayWeek(7));
    }

    @SuppressWarnings("deprecation")
	@Test
    public void monthSpace() throws ParseException {
        System.out.println(DateUtil.monthSpace("2020-02-19", "2020-01-01"));
        System.out.println(DateUtil.monthSpace("2020-02-19", "2020-01-01", "yyyy-MM-dd"));
    }

    @Test
    public void reduceMonthSpace() {
        System.out.println(DateUtil.reduceMonthSpace("2019-11-19 12:12:12", "2", "yyyy-MM-dd HH:mm"));
    }

    @SuppressWarnings("deprecation")
	@Test
    public void reduceMonthSpace2() throws ParseException {
        System.out.println(DateUtil.reduceMonthSpace2("2019-11-19", "2", "yyyy-MM-dd"));
    }
}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值