时间段判断工具类InDateUtil

时间段判断工具类InDateUtil

  1. 在开发中遇到判断当前时间是否在某个时间段的需求,时间段可以跨越24:00时,如判断当前时间是否在23:00至06:00内;随手写下这个方法。便以后查阅。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/** * * @Description: 判断某时间是否在某时段内 * @author: zrk * @time: 2015年5月7日 上午9:49:04 */
public class InDateUtil {

    public static void main(String[] args) {
        System.out.println(isInDate(new Date(), "06:00", "12:00","HH:mm"));
        //System.out.println(isInDate(new Date(), "23:00", "06:30","HH:mm"));
        //System.out.println(isInDate(new Date(), "23:00:00", "06:30:30","HH:mm:ss"));
    }

    /** * * @param date 输入的时间 * @param strDateBegin 时段开始时间 * @param strDateEnd 时段结束时间 * @param dateFormatStr 格式(HH:mm 或 HH:mm:ss) * @return */
    public static boolean isInDate(Date date, String strDateBegin,String strDateEnd,String dateFormatStr) {

        SimpleDateFormat afterSdf = new SimpleDateFormat(dateFormatStr);
        Date dBegin = null;
        Date dEnd = null;
        try {
            dBegin = afterSdf.parse(strDateBegin);
            dEnd = afterSdf.parse(strDateEnd);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar calPlayer = Calendar.getInstance();
        calPlayer.setTime(date);

        Calendar calBegin = Calendar.getInstance();
        calBegin.setTime(dBegin);
        Calendar calEnd = Calendar.getInstance();
        calEnd.setTime(dEnd);

        Calendar calendar = Calendar.getInstance();
        calBegin.set(calendar.get(Calendar.YEAR) , calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
        calEnd.set(calendar.get(Calendar.YEAR) , calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));

        if(calEnd.after(calBegin)){
            if(calPlayer.before(calEnd)&&calPlayer.after(calBegin))
                return true;
            else                
                return false;
        }else if(calBegin.after(calEnd)){

            if(isInDate(date,afterSdf.format(calBegin.getTime()),"23:59:59",dateFormatStr))
                return true;
            else if(isInDate(date,"00:00:00",afterSdf.format(calEnd.getTime()),dateFormatStr))
                return true;
            else 
                return false;
        }else {
            return false;
        }
    }
}

你可能感兴趣的:(时间段,在某时段,时间在某时间段内)