JAVA时间工具类

Date d1 = new Date(System.currentTimeMillis()-1000);
Date d2 = new Date(System.currentTimeMillis());
System.out.println(d1.compareTo(d2));

前者大于后者 返回大于0 反之小于0

 

格式化时间

    public static SimpleDateFormat longFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    public static SimpleDateFormat shortFormat = new SimpleDateFormat("yyyy-MM-dd");
    public static SimpleDateFormat monthFormat = new SimpleDateFormat("yyyy-M");//格式化为年月

    /**
     * 获取现在时间
     *
     * @return 返回时间类型 yyyy-MM-dd
     */
    public static Date getNowShortDate() {
        String dateString = shortFormat.format(new Date());
        ParsePosition pos = new ParsePosition(0);
        Date currentTime_2 = shortFormat.parse(dateString, pos);
        return currentTime_2;
    }

    /**
     * 获取现在时间
     *
     * @return 返回时间类型 yyyy-MM-dd HH:mm:ss
     */
    public static Date getNowDate() {
        String dateString = longFormat.format(new Date());
        ParsePosition pos = new ParsePosition(0);
        Date currentTime_2 = longFormat.parse(dateString, pos);
        return currentTime_2;
    }

    /**
     * 获取现在时间
     *
     * @return返回字符串格式 yyyy-MM-dd HH:mm:ss
     */
    public static String getNowStringDate() {
        String dateString = longFormat.format(new Date());
        return dateString;
    }

    /**
     * 获取现在时间
     *
     * @return返回字符串格式 yyyy-MM-dd
     */
    public static String getNowShortStringDate() {
        String dateString = shortFormat.format(new Date());
        return dateString;
    }

    /**
     * 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss
     *
     * @param strDate
     * @return
     */
    public static Date strToDate(String strDate) {
        ParsePosition pos = new ParsePosition(0);
        Date strtodate = longFormat.parse(strDate, pos);
        return strtodate;
    }

    /**
     * 将长时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss
     *
     * @param dateDate
     * @return
     */
    public static String dateToString(Date dateDate) {
        String dateString = longFormat.format(dateDate);
        return dateString;
    }

    /**
     * 将长时间格式字符串转换为时间 yyyy-MM-dd
     *
     * @param dateDate
     * @return
     */
    public static String strToString(Date dateDate) {
        String dateString = shortFormat.format(dateDate);
        return dateString;
    }

    /**
     * 时间是否有重合
     *
     * @param startDate          开始时间
     * @param endDate            结束时间
     * @param startReferenceDate 比对的开始时间
     * @param endReferenceDate   比对的结束时间
     * @return true 有重合 false 没有重合
     */
    public static boolean isTimeSuperposition(Date startDate, Date endDate, Date startReferenceDate, Date endReferenceDate) {
        Integer i1 = compareDate(startDate, startReferenceDate);
        Integer i2 = compareDate(startDate, endReferenceDate);
        Integer i3 = compareDate(endDate, startReferenceDate);
        Integer i4 = compareDate(endDate, endReferenceDate);
        if (i1 != null && i2 != null && 1 == i1 && -1 == i2) {
            return true;
        }
        if (i3 != null && i4 != null && 1 == i3 && -1 == i4) {
            return true;
        }
        if (i1 != null && i4 != null && i1 <= 0 && i4 >= 0) {
            return true;
        }
        return false;
    }

    /**
     * 格式化Date时间
     *
     * @param time         Date类型时间
     * @param timeFromat   String类型格式
     * @param defaultValue 默认值为当前时间Date
     * @return 格式化后的字符串
     */
    public static String parseDateToStr(Date time, String timeFromat, final Date defaultValue) {
        try {
            DateFormat dateFormat = new SimpleDateFormat(timeFromat);
            return dateFormat.format(time);
        } catch (Exception e) {
            e.printStackTrace();
            if (defaultValue != null)
                return parseDateToStr(defaultValue, timeFromat);
            else
                return parseDateToStr(new Date(), timeFromat);
        }
    }

    public static String getTimestamp(Date date) {
        SimpleDateFormat format = new SimpleDateFormat("MMddHHmm");
        return format.format(date);
    }

    /**
     * 格式化Date时间
     *
     * @param time       Date类型时间
     * @param timeFromat String类型格式
     * @return 格式化后的字符串
     */
    public static String parseDateToStr(Date time, String timeFromat) {
        DateFormat dateFormat = new SimpleDateFormat(timeFromat);
        return dateFormat.format(time);
    }

    /**
     * 获取两个日期中间的月份
     *       
     * @Param       [minDate, maxDate]
     * @return      java.util.List<java.lang.String>
     * @exception
     * 
     */
    public static List<String> getMonthBetween(String minDate, String maxDate) {
        ArrayList<String> result = new ArrayList<String>();
        try {
            Calendar min = Calendar.getInstance();
            Calendar max = Calendar.getInstance();
            min.setTime(monthFormat.parse(minDate));
            min.set(min.get(Calendar.YEAR),
                    min.get(Calendar.MONTH), 1);
            max.setTime(monthFormat.parse(maxDate));
            max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2);

            Calendar curr = min;
            while (curr.before(max)) {
                result.add(monthFormat.format(curr.getTime()));
                curr.add(Calendar.MONTH, 1);
            }
        }catch (ParseException e) {
            e.printStackTrace();
        }
        return result;
    }

 

    public static final String shortFormat = "yyyy-MM-dd";
    public static final String longFormat = "yyyy-MM-dd HH:mm:ss";

    /**
     * 统计两个时间的时间差
     * 相差几天
     */
    public static Long calculateTimeDifference(Date startDate, Date endDate) {
        if (null == startDate || null == endDate) {
            return -1L;
        }
        ZoneId zoneId = ZoneId.systemDefault();
        LocalDateTime fromDateTime = LocalDateTime.ofInstant(startDate.toInstant(), zoneId);
        LocalDateTime toDateTime = LocalDateTime.ofInstant(endDate.toInstant(), zoneId);
        LocalDateTime tempDateTime = LocalDateTime.from(fromDateTime);
        long days = tempDateTime.until(toDateTime, ChronoUnit.DAYS);
        return days;
    }

    /**
     * 校验时间字符串是否合法
     *
     * @param dateStr the date str
     * @param pattern the pattern
     * @return the boolean
     */
    public static boolean validDateStr(String dateStr, String pattern) {
        if (StringUtils.isEmpty(dateStr)) {
            return false;
        }
        if (StringUtils.isEmpty(pattern)) {
            pattern = longFormat;
        }
        try {
            LocalDate.parse(dateStr, new DateTimeFormatterBuilder().appendPattern(pattern).parseStrict().toFormatter());
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /**
     * 将字符串转换为时间
     *
     * @param
     * @return
     */
    public static Date strToDate(String dateStr, String pattern) {
        Date date = null;
        if (StringUtils.isBlank(dateStr)) {
            return new Date();
        }
        //实现将字符串转成⽇期类型
        SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
        try {
            date = dateFormat.parse(dateStr);
        } catch (ParseException e) {
            log.error(e.getMessage(), e);
        }
        return date;
    }

    /**
     * 将时间转换字符串
     *
     * @param data
     * @param formatType
     * @return
     */
    public static String dateToString(Date data, String formatType) {
        if (ObjectUtils.isEmpty(data)) {
            data = new Date();
        }
        return new SimpleDateFormat(formatType).format(data);
    }

    /***
     * 将对应格式的时间转换给yyyy-MM-dd格式
     * @param strDate
     * @param pattern
     * @return yyyy-MM-dd类型字符串
     */
    public static String toFormatDate(String strDate, String pattern) {
        try {
            Date date = new SimpleDateFormat(pattern).parse(strDate);
            return new SimpleDateFormat(shortFormat).format(date);
        } catch (ParseException e) {
            log.error(e.getMessage(), e);
            return null;
        }
    }

 

posted @ 2020-03-19 14:53  chelsey3tsf  阅读(165)  评论(0)    收藏  举报