JAVA 日期过期校验辅助工具

package com.yh.dzy.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * Created by 菜园子 on 2018/10/15.
 */
public class DateCalculateUtil {
    public static final int YEAR_RETURN = 0;

    public static final int MONTH_RETURN = 1;

    public static final int DAY_RETURN = 2;

    public static final int HOUR_RETURN= 3;

    public static final int MINUTE_RETURN = 4;

    public static final int SECOND_RETURN = 5;


    public static final String YYYY = "yyyy";

    public static final String YYYYMM = "yyyy-MM";

    public static final String YYYYMMDD = "yyyy-MM-dd";

    public static final String YYYYMMDDHH= "yyyy-MM-dd HH";

    public static final String YYYYMMDDHHMM = "yyyy-MM-dd HH:mm";

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


    public static long getBetween(String beginTime, String endTime, String formatPattern, int returnPattern) throws ParseException {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatPattern);
        Date beginDate = simpleDateFormat.parse(beginTime);
        Date endDate = simpleDateFormat.parse(endTime);

        Calendar beginCalendar = Calendar.getInstance();
        Calendar endCalendar = Calendar.getInstance();
        beginCalendar.setTime(beginDate);
        endCalendar.setTime(endDate);
        switch (returnPattern) {
            case YEAR_RETURN:
                return getByField(beginCalendar, endCalendar, Calendar.YEAR);
            case MONTH_RETURN:
                return getByField(beginCalendar, endCalendar, Calendar.YEAR)*12 + getByField(beginCalendar, endCalendar, Calendar.MONTH);
            case DAY_RETURN:
                return getTime(beginDate, endDate)/(24*60*60*1000);
            case HOUR_RETURN:
                return getTime(beginDate, endDate)/(60*60*1000);
            case MINUTE_RETURN:
                return getTime(beginDate, endDate)/(60*1000);
            case SECOND_RETURN:
                return getTime(beginDate, endDate)/1000;
            default:
                return 0;
        }
    }

    private static long getByField(Calendar beginCalendar, Calendar endCalendar, int calendarField){
        return endCalendar.get(calendarField) - beginCalendar.get(calendarField);
    }

    private static long getTime(Date beginDate, Date endDate){
        return endDate.getTime() - beginDate.getTime();
    }

    /**
     * 校验日期是否超过所给条件的期限
     * @param beginDate
     * @param endDate
     * @param optye 年月日时分秒
     * @param num
     * @return
     */
    public static boolean validateIsExpire(String beginDate,String endDate,int optye,long num){
        boolean b = false;
        try {
            switch (optye){
                case YEAR_RETURN:
                    b = getBetween(beginDate,endDate,YYYYMMDDHHMMSS,YEAR_RETURN) > num ? false : true;
                    break;
                case MONTH_RETURN:
                    b = getBetween(beginDate,endDate,YYYYMMDDHHMMSS,MONTH_RETURN) > num ? false : true;
                    break;
                case DAY_RETURN:
                    b = getBetween(beginDate,endDate,YYYYMMDDHHMMSS,DAY_RETURN) > num ? false : true;
                    break;
                case HOUR_RETURN:
                    b = getBetween(beginDate,endDate,YYYYMMDDHHMMSS,HOUR_RETURN) > num ? false : true;
                    break;
                case MINUTE_RETURN:
                    b = getBetween(beginDate,endDate,YYYYMMDDHHMMSS,MINUTE_RETURN) > num ? false : true;
                    break;
                case SECOND_RETURN:
                    b = getBetween(beginDate,endDate,YYYYMMDDHHMMSS,SECOND_RETURN) > num ? false : true;
                    break;
                default:
                    break;
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return b;
    }

    public static void main(String[] args) {
        System.out.println(validateIsExpire("2018-10-15 10:00:30", "2018-12-15 11:30:30", 1, 1));
    }
}

猜你喜欢

转载自blog.csdn.net/qq_34479912/article/details/83067776