class DateUtils extends org.apache.commons.lang3.time.DateUtils
{
    public static String YYYY = "yyyy";

    public static String YYYY_MM = "yyyy-MM";

    public static String YYYY_MM_DD = "yyyy-MM-dd";

    public static String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";

    public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";

    private static String[] parsePatterns = {
            "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", 
            "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
            "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};

    /**
     * 获取当前Date型日期
     * 
     * @return Date() 当前日期
     */
    public static Date getNowDate()
    {
        return new Date();
    }

    /**
     * 获取当前日期, 默认格式为yyyy-MM-dd
     * 
     * @return String
     */
    public static String getDate()
    {
        return dateTimeNow(YYYY_MM_DD);
    }

    public static final String getTime()
    {
        return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
    }

    public static final String dateTimeNow()
    {
        return dateTimeNow(YYYYMMDDHHMMSS);
    }

    public static final String dateTimeNow(final String format)
    {
        return parseDateToStr(format, new Date());
    }

    public static final String dateTime(final Date date)
    {
        return parseDateToStr(YYYY_MM_DD, date);
    }

    public static final String parseDateToStr(final String format, final Date date)
    {
        return new SimpleDateFormat(format).format(date);
    }

    public static final Date dateTime(final String format, final String ts)
    {<FILL_FUNCTION_BODY>}

    /**
     * 日期路径 即年/月/日 如2018/08/08
     */
    public static final String datePath()
    {
        Date now = new Date();
        return DateFormatUtils.format(now, "yyyy/MM/dd");
    }

    /**
     * 日期路径 即年/月/日 如20180808
     */
    public static final String dateTime()
    {
        Date now = new Date();
        return DateFormatUtils.format(now, "yyyyMMdd");
    }

    /**
     * 日期型字符串转化为日期 格式
     */
    public static Date parseDate(Object str)
    {
        if (str == null)
        {
            return null;
        }
        try
        {
            return parseDate(str.toString(), parsePatterns);
        }
        catch (ParseException e)
        {
            return null;
        }
    }

    /**
     * 获取服务器启动时间
     */
    public static Date getServerStartDate()
    {
        long time = ManagementFactory.getRuntimeMXBean().getStartTime();
        return new Date(time);
    }

    /**
     * 计算相差天数
     */
    public static int differentDaysByMillisecond(Date date1, Date date2)
    {
        return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)));
    }

    /**
     * 计算时间差
     *
     * @param endDate 最后时间
     * @param startTime 开始时间
     * @return 时间差（天/小时/分钟）
     */
    public static String timeDistance(Date endDate, Date startTime)
    {
        long nd = 1000 * 24 * 60 * 60;
        long nh = 1000 * 60 * 60;
        long nm = 1000 * 60;
        // long ns = 1000;
        // 获得两个时间的毫秒时间差异
        long diff = endDate.getTime() - startTime.getTime();
        // 计算差多少天
        long day = diff / nd;
        // 计算差多少小时
        long hour = diff % nd / nh;
        // 计算差多少分钟
        long min = diff % nd % nh / nm;
        // 计算差多少秒//输出结果
        // long sec = diff % nd % nh % nm / ns;
        return day + "天" + hour + "小时" + min + "分钟";
    }

    /**
     * 增加 LocalDateTime ==> Date
     */
    public static Date toDate(LocalDateTime temporalAccessor)
    {
        ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault());
        return Date.from(zdt.toInstant());
    }

    /**
     * 增加 LocalDate ==> Date
     */
    public static Date toDate(LocalDate temporalAccessor)
    {
        LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0));
        ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
        return Date.from(zdt.toInstant());
    }
}

        try
        {
            return new SimpleDateFormat(format).parse(ts);
        }
        catch (ParseException e)
        {
            throw new RuntimeException(e);
        }
    
<methods>public void <init>() ,public static java.util.Date addDays(java.util.Date, int) ,public static java.util.Date addHours(java.util.Date, int) ,public static java.util.Date addMilliseconds(java.util.Date, int) ,public static java.util.Date addMinutes(java.util.Date, int) ,public static java.util.Date addMonths(java.util.Date, int) ,public static java.util.Date addSeconds(java.util.Date, int) ,public static java.util.Date addWeeks(java.util.Date, int) ,public static java.util.Date addYears(java.util.Date, int) ,public static java.util.Date ceiling(java.util.Date, int) ,public static java.util.Calendar ceiling(java.util.Calendar, int) ,public static java.util.Date ceiling(java.lang.Object, int) ,public static long getFragmentInDays(java.util.Date, int) ,public static long getFragmentInDays(java.util.Calendar, int) ,public static long getFragmentInHours(java.util.Date, int) ,public static long getFragmentInHours(java.util.Calendar, int) ,public static long getFragmentInMilliseconds(java.util.Date, int) ,public static long getFragmentInMilliseconds(java.util.Calendar, int) ,public static long getFragmentInMinutes(java.util.Date, int) ,public static long getFragmentInMinutes(java.util.Calendar, int) ,public static long getFragmentInSeconds(java.util.Date, int) ,public static long getFragmentInSeconds(java.util.Calendar, int) ,public static boolean isSameDay(java.util.Date, java.util.Date) ,public static boolean isSameDay(java.util.Calendar, java.util.Calendar) ,public static boolean isSameInstant(java.util.Date, java.util.Date) ,public static boolean isSameInstant(java.util.Calendar, java.util.Calendar) ,public static boolean isSameLocalTime(java.util.Calendar, java.util.Calendar) ,public static Iterator<java.util.Calendar> iterator(java.util.Date, int) ,public static Iterator<java.util.Calendar> iterator(java.util.Calendar, int) ,public static Iterator<?> iterator(java.lang.Object, int) ,public static transient java.util.Date parseDate(java.lang.String, java.lang.String[]) throws java.text.ParseException,public static transient java.util.Date parseDate(java.lang.String, java.util.Locale, java.lang.String[]) throws java.text.ParseException,public static transient java.util.Date parseDateStrictly(java.lang.String, java.lang.String[]) throws java.text.ParseException,public static transient java.util.Date parseDateStrictly(java.lang.String, java.util.Locale, java.lang.String[]) throws java.text.ParseException,public static java.util.Date round(java.util.Date, int) ,public static java.util.Calendar round(java.util.Calendar, int) ,public static java.util.Date round(java.lang.Object, int) ,public static java.util.Date setDays(java.util.Date, int) ,public static java.util.Date setHours(java.util.Date, int) ,public static java.util.Date setMilliseconds(java.util.Date, int) ,public static java.util.Date setMinutes(java.util.Date, int) ,public static java.util.Date setMonths(java.util.Date, int) ,public static java.util.Date setSeconds(java.util.Date, int) ,public static java.util.Date setYears(java.util.Date, int) ,public static java.util.Calendar toCalendar(java.util.Date) ,public static java.util.Calendar toCalendar(java.util.Date, java.util.TimeZone) ,public static java.util.Date truncate(java.util.Date, int) ,public static java.util.Calendar truncate(java.util.Calendar, int) ,public static java.util.Date truncate(java.lang.Object, int) ,public static int truncatedCompareTo(java.util.Calendar, java.util.Calendar, int) ,public static int truncatedCompareTo(java.util.Date, java.util.Date, int) ,public static boolean truncatedEquals(java.util.Calendar, java.util.Calendar, int) ,public static boolean truncatedEquals(java.util.Date, java.util.Date, int) <variables>public static final long MILLIS_PER_DAY,public static final long MILLIS_PER_HOUR,public static final long MILLIS_PER_MINUTE,public static final long MILLIS_PER_SECOND,public static final int RANGE_MONTH_MONDAY,public static final int RANGE_MONTH_SUNDAY,public static final int RANGE_WEEK_CENTER,public static final int RANGE_WEEK_MONDAY,public static final int RANGE_WEEK_RELATIVE,public static final int RANGE_WEEK_SUNDAY,public static final int SEMI_MONTH,private static final int[][] fields