1定時器? 定時幾點出發(fā);2對當(dāng)前時間的判斷炎疆;3獲取某天0點時間戳
1TimeUtil類
public class TimeUtil {
public staticDate buildTime(inthour,intminute,intsecond) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, second);
Date time = calendar.getTime();
if(time.before(newDate())) {
//若果當(dāng)前時間已經(jīng)是凌晨1點后颜阐,需要往后加1天噪服,否則任務(wù)會立即執(zhí)行。
//很多系統(tǒng)往往系統(tǒng)啟動時就需要立即執(zhí)行一次任務(wù),但下面又需要每天凌晨1點執(zhí)行癌椿,怎么辦呢躺坟?
//很簡單,就在系統(tǒng)初始化話時單獨執(zhí)行一次任務(wù)(不需要用定時器熊痴,只是執(zhí)行那段任務(wù)的代碼)
time =addDay(time,1);
}
returntime;
}
private staticDate addDay(Date date,intdays) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, days);
returnstartDT.getTime();
}
}
1.2調(diào)用
Timer timer =newTimer();
timer.schedule(deleteTransTask, TimeUtil.buildTime(9,30,0),1000*60*60*24);
2isXXXXTime()類
public boolean ?isXXXXTime() {
//9:30-11:30,13:00-15:00;
Calendar cal = Calendar.getInstance();//日期
//week hour minute minuteofday 當(dāng)前時間
int ? ?week = cal.get(Calendar.DAY_OF_WEEK);
int ? hour = cal.get(Calendar.HOUR_OF_DAY);//獲取小時
int ? minute = cal.get(Calendar.MINUTE);//獲取分鐘
//用這個字段判斷
int ? minuteOfDay = hour *60+ minute;//從0:00分開是到目前為止的分鐘數(shù)
//自己設(shè)定的時間范圍
final intamStart =8*60+36;//起始時間的分鐘數(shù)
final intpmStart =13*60+00;
final intamEnd =8*60+38;//結(jié)束時間的分鐘數(shù)
final intpmEnd =13*60+10;
if(week ==1|| week ==7) {
return false;
}else if(minuteOfDay >= amStart && minuteOfDay <= amEnd) {//上午開盤
return true;
}else if(minuteOfDay >= pmStart && minuteOfDay <= pmEnd) {//下午開盤
return true;
}else{
return false;
}
}
3方法:返回當(dāng)天零點的時間戳
public long ?getDayBeginTimestamp() {
Date date =new Date();
GregorianCalendar gc =newGregorianCalendar();
gc.setTime(date);
Date date2 =newDate(date.getTime() - gc.get(gc.HOUR_OF_DAY) *60*60
*1000- gc.get(gc.MINUTE) *60*1000- gc.get(gc.SECOND)
*1000);
return ?date2.getTime()/1000;
}