開發中有時候需求是要我們判斷目前時間是否是在當天的某個時間段,比如判斷某個操作是否是在工作時間(這個時間可以自定義)
隻需要寫個方法如下:
/**
* 判斷目前系統時間是否在指定時間的範圍内
* <p>
* beginHour 開始小時,例如22
* beginMin 開始小時的分鐘數,例如30
* endHour 結束小時,例如 8
* endMin 結束小時的分鐘數,例如0
* true表示在範圍内, 否則false
*/
public static boolean isCurrentInTimeScope(int beginHour, int beginMin, int endHour, int endMin) {
boolean result = false;
final long aDayInMillis = 1000 * 60 * 60 * 24;
final long currentTimeMillis = System.currentTimeMillis();
Time now = new Time();
now.set(currentTimeMillis);
Time startTime = new Time();
startTime.set(currentTimeMillis);
startTime.hour = beginHour;
startTime.minute = beginMin;
Time endTime = new Time();
endTime.set(currentTimeMillis);
endTime.hour = endHour;
endTime.minute = endMin;
// 跨天的特殊情況(比如22:00-8:00)
if (!startTime.before(endTime)) {
startTime.set(startTime.toMillis(true) - aDayInMillis);
result = !now.before(startTime) && !now.after(endTime); // startTime <= now <= endTime
Time startTimeInThisDay = new Time();
startTimeInThisDay.set(startTime.toMillis(true) + aDayInMillis);
if (!now.before(startTimeInThisDay)) {
result = true;
}
} else {
//普通情況(比如 8:00 - 14:00)
result = !now.before(startTime) && !now.after(endTime); // startTime <= now <= endTime
}
return result;
}
調用方式為:
if (isCurrentInTimeScope(0,0,8,0)){
//做對應的操作
Toast.makeText(mContext, "早上好!", Toast.LENGTH_SHORT).show();
}
即可!