我有一個頻率和時間範圍,頻率必須被執行。 對於例如,如果當前時間是上午02時和頻率爲360分鐘,它具有到假設 因爲它剛過午夜,任務應該在裝置6 AM根據頻率和服務器啓動設置任務的開始
360分鐘12之後執行當前時間是服務器啓動從午夜開始。 因此,如果服務器開始於凌晨5點和frequncy是360任務應在上午6時
運行,但如果任務是凌晨5點和頻率是240,因爲它已經從午夜 接下來的運行應該是在上午8時通過240分鐘
如果服務器開始於上午10時和頻率爲300接着從午夜開始一次運行在上午05點ANS下如在上午10點計算,以便將在上午10點
立即開始範圍divded成4分之4,上午12時的時間流逝到6AM到12PM,12PM到6PM和6PM到第二天12AM 這是下面的代碼工作罰款爲240和360 fre當它的60頻率出現問題時會出錯。 其下面提供一些值:
stNow----serverTime
sElapsed ---time elapsed from midnight
currFreq ----frequecy
protected int _getInitWorkerTime()
{
int vRun=0;
STime stNow= new STime(PWMSystem.newDate());
int currFreq = _findAlertFrequency()/60;
int sElapsed =Constants.MINUTES_PER_DAY-stNow.elapsedMinutes(STime.midnight);
_log.error("now time as 24------"+stNow.getHourNo24());
_log.error("now currFreq------"+currFreq);
_log.error("now sElapsed-----"+sElapsed);
if(sElapsed == 1440)
sElapsed=0;
if(stNow.getHourNo24()>=0 && stNow.getHourNo24()<=6)
{
_log.error("now time as 24-inside cond-1-----"+stNow.getHourNo24());
if(currFreq>sElapsed)
vRun= currFreq-sElapsed;
else
vRun= -(currFreq-sElapsed);
}
if(stNow.getHourNo24()>6 && stNow.getHourNo24()<=12)
{
_log.error("now time as 24-inside cond-2-----"+stNow.getHourNo24());
if(currFreq>sElapsed)
vRun=360-(currFreq-sElapsed);
else
vRun=360-(-(currFreq-sElapsed));
}
if(stNow.getHourNo24()>12 && stNow.getHourNo24()<=18)
{
_log.error("now time as 24-inside cond-3-----"+stNow.getHourNo24());
if(currFreq>sElapsed)
vRun=720-(currFreq-sElapsed);
else
vRun=720-(-(currFreq-sElapsed));
}
if(stNow.getHourNo24()>18 && (stNow.getHourNo24()<=24 ||stNow.getHourNo24()<=0))
{
_log.error("now time as 24-inside cond-4-----"+stNow.getHourNo24());
if(currFreq>sElapsed)
vRun=1080-(currFreq-sElapsed);
else
vRun=1080-(-(currFreq-sElapsed));
}
// vRun=_MAX_FREQUENCY_DELAY_IN_SEC+ sElapsed*60+_findAlertFrequency()+_BOOT_DELAY_SECONDS_START;*/
//vRun=stNow.elapsedMinutes(STime.midnight)*60+_findAlertFrequency()+_BOOT_DELAY_SECONDS_START;
return (vRun*60 + _BOOT_DELAY_SECONDS_START);
}
也許把獎金提高到500會有幫助:) – Zabba 2010-08-10 06:23:17
我正確的說,你發佈的函數是用來初始化一些需要在特定時間運行的任務嗎?該功能是否對啓動時的每個任務僅執行一次?所以,如果你調用函數,返回值是任務需要啓動的那一天的小時數? – n3utrino 2010-08-10 08:48:20
@gabe: - 你是對的。這是爲了開始任務。該函數在init中只執行一次。 – GustyWind 2010-08-10 10:20:18