時間段判斷工具類InDateUtil
- 在開發中遇到判斷當前時間是否在某個時間段的需求,時間段可以跨越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"));
}
/**
*
* @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;
}
}
}