java Dateutil 操作类

方法内容:

1 yyyy-MM-dd 格式化时间

2 yyyy-MM-dd HH:mm:ss 格式化时间

3 获得年份

4 获得月份

5 获得日期

6 当前时间的加减操作

7 两个时间的差值操作

package com.tenyears.common.utils;
 
import org.apache.commons.lang3.StringUtils;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.Calendar;
import java.util.Date;
 
 
public class DateUtil {
    public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    public static SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
 
    public static Date getCurDate() {
        Date currDate = new Date();
        return currDate;
    }
 
    public static String format(Date date) {
        if (date != null) {
            return format.format(date);
        }
        return null;
    }
 
    public static String format2(Date date) {
        if (date != null) {
            return format2.format(date);
        }
        return null;
    }
 
    public static Date parse2(String dateStr) {
        if (StringUtils.isNoneBlank(dateStr))
            try {
                return format2.parse(dateStr);
            } catch (ParseException e) {
                LogerUtil.error(LogerUtil.getPrintStr(e));
            }
        return null;
    }
 
    public static Date parse(String dateStr) {
        if (StringUtils.isNoneBlank(dateStr))
            try {
                return format.parse(dateStr);
            } catch (ParseException e) {
                LogerUtil.error(LogerUtil.getPrintStr(e));
            }
        return null;
    }
 
    /**
     * 
     * @param date
     * @return date对应的年
     */
    public static int getYear(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.YEAR);
    }
 
    public static int getNowYear() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        return calendar.get(Calendar.YEAR);
    }
 
    /**
     * 
     * @param date
     * @return date对应的月
     */
    public static int getMonth(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.MONTH) + 1;
    }
 
    public static int getNowMonth() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        return calendar.get(Calendar.MONTH) + 1;
    }
 
    /**
     * @param date
     * @return 对应的天
     */
    public static int getDay(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.DAY_OF_MONTH);
    }
 
    public static int getNowDay() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        return calendar.get(Calendar.DAY_OF_MONTH);
    }
 
 
    /**
     * 时间加减
     * @param date 时间
     * @param calendarType Calendar.Year / Calendar.Month.....
     * @param value value
     * @return
     */
    public static Date add(Date date,int calendarType,int value)
    {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(calendarType, value);//当前时间减去一年,即一年前的时间
        return calendar.getTime();//获取一年前的时间,或者一个月前的时间
    }
 
    /**
     * 得到两个时间的差值
     * @param d1
     * @param d2
     * @param chronoUnit  ChronoUnit.Year / ChronoUnit.Month....
     * @return
     */
    public static long subDate(Date d1,Date d2,ChronoUnit chronoUnit)
    {
        LocalDate afterDate = d1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        LocalDate beforeDate = d2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        long diff = chronoUnit.between(beforeDate, afterDate);
        return diff;
    }
 
    /**
     * 得到两个时间相减的年数
     * @param d1
     * @param d2
     * @return
     */
    public static long subYears(Date d1,Date d2)
    {
        LocalDate afterDate = d1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        LocalDate beforeDate = d2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        long diff = ChronoUnit.YEARS.between(beforeDate, afterDate);
        return diff;
    }
 
    /**
     * 得到两个时间相减的月数
     * @param d1
     * @param d2
     * @return
     */
    public static long subMonths(Date d1,Date d2)
    {
        LocalDate afterDate = d1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        LocalDate beforeDate = d2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        long diff = ChronoUnit.MONTHS.between(beforeDate, afterDate);
        return diff;
    }
 
    /**
     * 得到两个时间相减的天数
     * @param d1
     * @param d2
     * @return
     */
    public static long subDays(Date d1,Date d2)
    {
        LocalDate afterDate = d1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        LocalDate beforeDate = d2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        long diff = ChronoUnit.DAYS.between(beforeDate, afterDate);
        return diff;
    }
 
    /**
     * 得到两个时间相减的小时数
     * @param d1
     * @param d2
     * @return
     */
    public static long subHours(Date d1,Date d2)
    {
        LocalDate afterDate = d1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        LocalDate beforeDate = d2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        long diff = ChronoUnit.HOURS.between(beforeDate, afterDate);
        return diff;
    }
    /**
     * 得到两个时间相减的分钟数
     * @param d1
     * @param d2
     * @return
     */
    public static long subMinutes(Date d1,Date d2)
    {
        LocalDate afterDate = d1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        LocalDate beforeDate = d2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        long diff = ChronoUnit.MINUTES.between(beforeDate, afterDate);
        return diff;
    }
 
    /**
     * 得到两个时间相减的秒钟数
     * @param d1
     * @param d2
     * @return
     */
    public static long subSeconds(Date d1,Date d2)
    {
        LocalDate afterDate = d1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        LocalDate beforeDate = d2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        long diff = ChronoUnit.SECONDS.between(beforeDate, afterDate);
        return diff;
    }
}
原文地址:https://www.cnblogs.com/hanjun0612/p/15069930.html