時間段判斷工具類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;
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章